求连续的最大子序列和的最快的算法-在线处理算法
在这里给出了在线处理算法的函数,该算法的时间复杂度为T(n)= O(n),是求子序列和中最好的算法;
int MaxSubseqSum(int A[],int N)
{
int ThisSum,MaxSum;
int i;
ThisSum = MaxSum = 0;
for(i = 0;i < N;i++){
ThisSum += A[i]; /*向右累加*/
if(ThisSum > MaxSum)
MaxSum = ThisSum; /*发现更大和则更新当前结果*/
else if (ThisSum < 0) /*如果当前子列和为负*/
ThisSum = 0; /*则不可能使后面的部分和增大。抛弃之*/
}
return MaxSum;
}