最大子段和

Posted 王勋广

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大子段和相关的知识,希望对你有一定的参考价值。

问题

给定由n个整数(可能为负整数)组成的序列a1,a2,…,an,求该序列的子段和的最大值。当所有和为负整数时定义其最大子段和为0。
例如,当(a1,a2,a3,a4,a5,a6)={-2,11,-4,13,-5,-2}时,最大子段和为20。

【算法分析】

 

源代码

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

 

以上是关于最大子段和的主要内容,如果未能解决你的问题,请参考以下文章

线段树维护区间最大子段和

动态规划 ------最大子段和

最大子段和问题,最大子矩阵和问题,最大m子段和问题

51nod 最大子段和

SPOJ GSS3 单点修改+区间最大子段和

CODEVS 3981(求最大子段和+线段树)