2015-08-08 77 views
0

因此,我想出了一个问题,我已经查找和搜索,但没有找到答案...什么是最好的(并说最好的,我的意思是最快)的方式来获得x元素的最大连续子序列总和?假设我已经:A [] = {2,4,1,10,40,50,22,1,24,12,40,11,...}。 然后我问:x元素的最大连续子序列总和

"What is the maximum contigous subsequence on array A with 3 elements?" 

请一个阵列,使超过10万组的元素想象这...有人能帮助我吗?

谢谢你的时间和你的帮助!

回答

0

我Google了一下,发现this

使用分而治之的办法,我们可以发现在O(nLogn)时间的最大子数组之和。以下是除法和征服算法。

该问题的Kadane算法需要O(n)次。因此,Kadane的算法比分而治之的办法

更好地看到the code

Initialize: 
    max_so_far = 0 
    max_ending_here = 0 

Loop for each element of the array 
    (a) max_ending_here = max_ending_here + a[i] 
    (b) if(max_ending_here < 0) 
      max_ending_here = 0 
    (c) if(max_so_far < max_ending_here) 
      max_so_far = max_ending_here 
return max_so_far 
+0

这是不是真的我在寻找什么,因为我需要用X元素分组的最高金额...想象一下,在我上面的例子中,最大总和就是所有元素,因为它们都是正数,但我想要最大的总和由3个元素组成......所以:这将是40 50 22。 –