1,代码1
问题1:
遇到:[-5,-1,-2]
全为负数的情况测试不能通过;
修改代码第7行为注释后面的代码;
问题2:
修改后,发现
遇到:[-3,-2,0,-1] ,测试不能通过;
因为即便ThisSum>MaxSum, ThisSum 也可能小于0,应该取0.
所以第14行不能用else 应该同时判断,去掉else.
# include <stdio.h>
long long MaxSubSequenceSum_4(long long A[], long long N)
{
long long ThisSum,MaxSum,i;
ThisSum=0;
MaxSum=0;//注意 初始值不能设置为0,应该为数组第一个元素 // MaxSum=A[0];
for(i=0;i<N;i++)
{
ThisSum+=A[i];
if(ThisSum>MaxSum)
MaxSum=ThisSum;
else if(ThisSum<0) //注意 去掉else // if(ThisSum<0)
ThisSum=0;
}
return MaxSum;
}
int main()
{
long long i,a[65535]={0},n=0;
int c;
for(i=0;;i++)
{
scanf("%lld",&a[i]);
n++; //统计个数
c=getchar();
if (c=='\n')
{
break;
}
}
printf("%lld",MaxSubSequenceSum_4(a, n));
return 0;
}