最大子段和:
对一个数字串T,求其某一段元素之和,使得其和是最大。 ( 注:如果所有的数字都不大于0,则规定其和为0。)

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

sum[m]是到下标为m的元素为止的最大子段和。

求出sum[m]后,线扫数组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;
        }
    }
}