现在的位置: 首页 > 综合 > 正文

动态规划算法求最大子段和问题

2013年02月01日 ⁄ 综合 ⁄ 共 228字 ⁄ 字号 评论关闭

        给定由N个整数(可能有负整数)组成的序列a1,a2,...,an ,求该序列形如ai+ai+1+...+aj的子段和的最大值。

    

        当所有整数均为负整数时,定义其最大子段和为0

       

int MaxSum(int *a, int n)
{ int sum=0,b=0;
for( int j=1; j<=n; j++)
{ if ( b>0) b+=a[j]; else b=a[j];
if(b>sum) sum= b;}
return sum;
}

时间复杂度为O(n)

抱歉!评论已关闭.