//最大子列和算法实现,算法复杂度O(n)
int MaxSubseqSum(int List[],int N)
{
int i;
int ThisSum, MaxSum;
ThisSum = MaxSum = 0;
for(i=0;i<N;i++)
{
ThisSum +=List[i];//向右累加
if(ThisSum>MaxSum)
{
MaxSum = ThisSum;//更新最大值
}
else if(ThisSum<0)
{
ThisSum = 0;//如果当前子列为负,不可能使後面的部分和增大,抛弃
}
}
return MaxSum;
}
网友评论