那里是包含奖品或罚款的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))
`
如果我理解正确的话,您似乎使问题变得过于复杂。以下似乎有效:
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