问题:给定整数A1,A2,·······,An,求该序列中所有子序列(包括本序列)中的元素和最大值,如果所有整数均为负数,则最大子序列和为0
算法一:穷举法。运行时间为O(N3)
代码:
int MaxSubsequenceSum(const int A[], int N)
{
int ThisSum, MaxSum, i,j,k;
MaxSum = 0;
for(i = 0; i< N; i++)
{
for(j = i; j < N; j++)
{
ThisSum = 0;
for(k = i; k <= j; k++)
ThisSum += A[k];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
}
}
return MaxSum;
}
算法二:撤销算法一的一个for循环,运行时间O(N2)
代码:
int MaxSubsequenceSum(const int A[], int N)
{
int ThisSum, MaxSum, i,j,k;
MaxSum = 0;
for(i = 0; i < N; i++)
{
ThisSum = 0;
for(j = i; j < N; j++)
{
ThisSum += A[j];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
}
}
retur