我的答案是0。 我在寻找最大子数组总和
的代码中做错了什么
for(k=n;k>0;k--)
{
for (j=0;j<k;j++)
{
sum1=0;
for(i=j;i<k;i++)
{
int sum1=sum1+a[i];
}
ans =max(sum1,ans);
}
}
cout<<ans;
对于输入1,2,3,4,我的答案是0,而不是10
答案 0 :(得分:1)
可能的原因(尽管很难在没有更多上下文的情况下很难说出)是此行:
int sum1=sum1+a[i];
int
前面的sum1
关键字创建一个名称完全相同的新变量。这意味着它将在退出循环的那一刻超出范围。这意味着,您真正想要的sum1
永远不会被设置。
改为使用此:
sum1=sum1+a[i];
看看是否能解决。
答案 1 :(得分:0)
Int sum1 = sum1 + a [I]; 这里sum1被创建为局部变量,因此当您退出循环时,该变量将消失,您将获得sum1,它在上面的for循环中声明,值为0