【发布时间】:2019-12-09 11:56:59
【问题描述】:
问题定义: 有 N 个包含奖品或罚金的盒子。正值 表示它是奖品,负值表示它是 惩罚。表示奖金额或罚金金额的N个值为 作为程序的输入传递。一个人可以挑选任意数量的盒子 但那些箱子必须连续排列。程序必须打印 男子可以选择的最高奖金。
边界条件:
1
输入格式:
第一行包含 N。
第二行包含N个整数,表示奖品或罚款金额,以空格分隔。
示例输入/输出 1:
输入:
9
2 -4 4 3 -2 -1 7 -4 3
输出:
11
说明:
男子选择以下五个盒子时可获得最高奖金 4 3 -2 -1 7
示例输入/输出 2:
输入:
20
63 78 111 43 104 -89 35 57 -55 84 111 91 -18 50 42 100 -67 84 70 63
输出:
957
输入/输出示例 3:
输入:
5
-5 -6 -8 -7 -9
输出:
0
最大执行时间限制: 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))
【问题讨论】:
-
可能codereview.stackexchange.com 会更有帮助
-
尝试使用DP(动态规划)方法,它会在线性时间内解决您的问题
标签: python python-3.x algorithm list