最大的连续总和

时间:2011-08-01 01:15:31

标签: algorithm

  

可能重复:
  Find the maximum interval sum in a list of real numbers

下面是我的dp表达式来解决这个问题:

lcs[i] = { max(lcs[i-1] + x[i], x[i])}

其中lcs [i]是直到索引i并且还包括元素x [i]的最长连续和。但是,我不知道为什么我们定义lcs [i]也包括x [i]。我们不能将lcs [i]定义为直到索引i的最长连续总和。

1 个答案:

答案 0 :(得分:0)

您不能将lcs[i]定义为lcs[i-1]+x[i],因为列表中可能存在负数。

考虑清单x={-1, 1}

lcs[0] = -1
lcs[1] = max(-1+1,1) = 1 != -1+1

如果您的列表严格是非负面的,那么是的,您可以定义lcs[i]=lcs[i-1]+x[i]。但请注意,此递归定义直接转换为所有x[i]的总和。这同意直观的概念,即正数列表的最大连续总和只是列表中所有元素的总和。