只要最小数组里有负数,重合就会导致负数被多次计算,求得的和肯定不是最大的。
很经典的算法了,答题思路是这样的;
(1)初始化这个和sum=0;
(2)从数组的第一个元素开始,如果值大于等于0,则加到sum,即sum+=a[i];如果<0,转到(3)
(3)判断a[i]~a[n-1]的和是否>=0,if so,将其加到sum中,else 记下sun的值,从a[i+1]开始重复(1)
也可以这样:
(1)sum=a[0];
(2)for(i=1,i<=n,i++)
{
if(sum<=0)
sum=0;
sum+=a[i];
}