最大连续子列和
目录
O(n)解法
//如果是负数则返回零
int MaxSubsequence(int a[], int n)
{
int maxSum = 0, thisSum = 0;
for (int i = 0; i < n; i++)
{
thisSum += a[i];
if (thisSum > maxSum)
maxSum = thisSum;
if (thisSum < 0)
thisSum = 0;
}
return maxSum;
}
//返回最大的子序列,如果是负数,则返回最大的负数
int MaxSubsequence(int a[], int n)
{
int maxSum = a[0], thisSum = a[0];
for (int i = 1; i < n; i++)
{
if (thisSum <= 0)
thisSum = a[i];
else
thisSum += a[i];
if (thisSum > maxSum)
maxSum = thisSum;
}
return maxSum;
}