最大子序列和问题

问题声明:

给定整数A1,A2,...,AN(可能有负数),求Ai+...+Aj的最大值(1 <= i <= N, 1 <= j <= N, i <= j)(为方便起见,如果所有整数均为负数,则最大子序列和为0)。

有效算法:

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;

}

该算法的时间复杂度为O(N)。

你可能感兴趣的:(序列)