最大的子序列和的问题:
给定整数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 ; }
时间: 2024-10-01 05:05:52