最大子序列和问题的解

最大的子序列和的问题:

      给定整数A1,A2,...,An(可能有负数),求Σjk=i   Ak 的最大值(为方便起见,如果所有整数均为负数,则最大子序列的和为0)。

      

      这道题应该是比较基础的题目,有多种解法,时间复杂度也不尽相同,在这里就给大家介绍一种最有效的算法,其时间复杂度为O(n).

   代码如下:

   应该是比较好理解的。。。。注意题目要求所有整数均为负数时输出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 ; 
}

    

原文地址:https://www.cnblogs.com/yaoyueduzhen/p/4384412.html