题目:给定一个一维数组,求出该数组最大字段和为多少?
解题:该题解法很多,本文仅提供一种动态规划的解法,复杂度为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;
}