最大的子序列和问题
给定整数序列A1,A2,…,An(可能有负数),求子序列和的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为0)。
例:
输入-2,11,-4,13,-5,-2时,最大子序列和为20(A2至A4)。
代码如下
int MaxSubsequenceSum(const int A[], int N)
{
int ThisSum, MaxSum, j;
ThisSum = MaxSum = 0;
for( j = 0; j < N; j++ )
{
ThisSum += A[j];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
else if(ThisSum < 0)
ThisSum = 0;
}
return MaxSum;
}