最大子段和:
對(duì)一個(gè)數(shù)字串T,求其某一段元素之和,使得其和是最大。 ( 注:如果所有的數(shù)字都不大于0,則規(guī)定其和為0。)

求法:
                / if (sum[m-1] + T[m] >= 0){ sum[m] = sum[m -1] + T[m]}
sum[m] =
                \else {sum[m] = T[m]}

sum[m]是到下標(biāo)為m的元素為止的最大子段和。

求出sum[m]后,線掃數(shù)組sum的最大值就是所求。


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