最大子序列和 经常会和最长递增子序列搞混。。。然而最近看了下最大子序列和,其实没有想象中那么难。。。
最大子序列和 是求连续子序列里面和最大的那个子序列的和。如果还想求出子序列的位置,可以增加两个用来记录子序列起始位置的变量,在两个if语句里面添加变量更新语句。
int MaxSubsequenceSum(const int A[], int N)
{
int flag,MaxSum,i;
flag = 0, MaxSum = 0;
for(i = 0; i < N; i++)
{
flag += A[i];
if(flag > MaxSum)
MaxSum = flag;
else if(flag <0)
flag = 0;
}
return MaxSum;
}