最高奖金

问题描述 投票:0回答:1

那里是包含奖品或罚款的N个盒子。正值表示它是奖品,而负值表示它是奖品罚款。表示奖金额或罚金额的N值为作为输入传递给程序。一个男人可以挑任意数量的盒子但是这些盒子必须连续排列。该程序必须打印该男子可以选择的最高奖金。

边界条件:1 <= n <= 10 ^ 5

输入格式:第一行包含N。第二行包含N个整数,代表用空格分隔的奖赏或罚款数额。

示例输入/输出1:输入:92 -4 4 3 -2 -1 7 -4 3

输出:11

说明:当该人选择以下五个盒子时,可以获得最高奖金4 3 -2 -1 7

最大执行时间限制:200毫秒

我可以解决这个问题,我的算法正确,但是执行时间超出限制?`

 a=int(input())
 b=list(map(int,input().split()))
 e=[]
 for i in range(2,a+1):
     if i!=a:
         for j in range(a-i+1):
             s=0
             for k in range(j,i+j):
                 s+=b[k]
             e.append(s)
     else:
         s=0
         for k in range(a):
             s+=b[k]
         e.append(s)
 print(max(e))
`
python-3.x list
1个回答
0
投票

如果我理解正确的话,您似乎使问题变得过于复杂。以下似乎有效:

代码:

a=int(input())
b=list(map(int,input().split()))
e=max(b[i: i+a] for i in range(len(b) - a))
print(sum(e))

输出:

5
2 -4 4 3 -2 -1 7 -4 3

11
© www.soinside.com 2019 - 2024. All rights reserved.