最大子段和问题的动态规划解法

题目:给定一个一维数组,求出该数组最大字段和为多少?
解题:该题解法很多,本文仅提供一种动态规划的解法,复杂度为O(n),
SUM=max{b[j-1]+a[j],a[j]}
其中:

     if b[j-1]>0

          b[j]=b[j-1]+a[j] 
     else
         b[j]=a[j];

int MaxSum(int n, int *a)
{

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

}

猜你喜欢

转载自blog.csdn.net/double_s_c/article/details/76151967
今日推荐