给定由N个整数(可能有负整数)组成的序列a1,a2,...,an ,求该序列形如ai+ai+1+...+aj的子段和的最大值。
时间复杂度为O(n)
当所有整数均为负整数时,定义其最大子段和为0
int MaxSum(int *a, int n)
{ int sum=0,b=0;
for( int j=1; j<=n; j++)
{ if ( b>0) b+=a[j]; else b=a[j];
if(b>sum) sum= b;}
return sum;
}
时间复杂度为O(n)