int MaxSum(int *a, int len)
{
int sum = 0;
int tem = a[0];
for(int i = 1; i < len; i++)
{
if (tem < 0)
tem = a[i];
else
tem += a[i];
if (tem>sum)
sum = tem;
}
return sum;
}
int maxSum2(int *a, int len)
{
int bPre = a[0];
int nMax = a[0];
for (int i = 1; i < len; i++)
{
bPre = max(a[i],bPre+a[i]);
nMax = max(bPre,nMax);
}
return nMax;
}
第一种方法没办法处理全为负数的情况~
第二种方法可以处理这种情况~