它们是一个带有正负整数的数组 假设:1,2,-1,3,5,1,-4,2,7 现在我必须找到所有组合的最大和
组合应为
1。主集中没有元素是连续的
2.元素应为正数
我最初想通过将其除以偶数和偶数来实现此目的,但这实际上并不能解决。
ods=[]
evns=[]
ok=0;
ek=1;
for x in range(n):
print(str(x)+"-"+str(ok)+"-"+str(ek))
if x == ok and tkts[x]>0:
ods.append(tkts[x])
ok+=2
elif x == ok and tkts[x] <= 0:
ok+=1
if x == ek and tkts[x]>0:
evns.append(tkts[x])
ek+=2
elif x == ek and tkts[x] <= 0:
ek+=1
请问逻辑是什么?
答案 0 :(得分:1)
您可以使用DP。递归的想法如下
get_max(index):
max = 0
for i from index+2 to len:
if(array[i] > 0)
v = get_max(i)
if (v > max) max = v
return array[index]+max
get_max(0)
如果我们要记住
x = [1,2,-1,3,5,1,-4,2,7]
dp = [0]*len(x)
ret = 0
for i in range(len(x)-3, -1, -1):
max = 0
for j in range(i+2, len(x)):
if x[j] > 0 and dp[j]>max: max = dp[j]
if x[i] > 0:
dp[i] = max + x[i]
if ret < dp[i]: ret = dp[i]
(我尚未测试此代码,这只是出于想法)