主要问题就是:给定整数A1,A2.......(可能为负数)求子序列和最大值(如果所有整数为负数,则子序列和为0,因为负数之中0最大)
【1】穷举法:
例如
从-2开始,数字依次往后相加,得出在以-2开始的序类中,最大值为18.
以此类推,从11开始,数字以此往后加,得出在以11开始的序类中,最大值是20
从-4开始,数字以此往后加,得出在以-4开始的序类中,最大值是9
后面程序自己看
(上面就是详细的走个程序过程,具体代码如下)
穷举法:
int MaxSubseqSum1(int List[],int N)
{
int i,j,k;
int ThisSum,MaxSum=0;
for(i=0;i<N;i++)
{
for(
ThisSum=0;
for(k=i;k<=j;k++)
ThisSum+=List[k];
if(ThisSum>MaxSum)
MaxSum=ThisSum;
}
return MaxSum;
}
三层嵌套,其的复杂度为O(N^3)。
【2】穷举法的改进
int MaxSubseqSum1(int List[],int N)
{
int i,j,k;
int ThisSum,MaxSum