【发布时间】:2015-07-15 09:05:40
【问题描述】:
下面是我在 Python 2.7 中用于返回最大子数组的 kadane 算法的代码。虽然,对于给定的示例列表,我得到了正确的最大总和(MSS 变量), 它返回错误的子数组。有人可以解释一下为什么吗?
A = [-2,1,-3,4,-1,2,1,-5,4]
M = max(A)
L = len(A)
if(M < 0):
print M
ans = []
subans = []
MSS,subsum,i = 0,0,0
while(i<L):
subans.append(A[i])
subsum = sum(subans)
if(subsum<0):
subans=[]
i+=1
else:
if(subsum>MSS):
MSS=subsum
ans=subans
i+=1
else:
i+=1
print ans
【问题讨论】:
-
你能提供预期的输出吗
-
预期输出 [4,-1,2,1] 且 MSS =6 但是我得到 [4,-1,2,1,-5,4]
-
当你总是增加 i 时,为什么要使用 else 并在每个块中增加 i?您可能想查看
range并了解elifs's