C++ 最大子数组和。哪里错了?
我的答案是0。 我在代码中查找最大子数组和的错误是什么C++ 最大子数组和。哪里错了?,c++,arrays,C++,Arrays,我的答案是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;
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;
对于(k=n;k>0;k--)
{
对于(j=0;j而言,可能的原因(尽管没有更多的上下文很难判断)如下所示:
int sum1=sum1+a[i];
sum1
前面的int
关键字创建了一个具有完全相同名称的新变量。这意味着它将在您离开该循环时超出范围。这意味着,您真正想要的sum1
永远不会被设置
改用这个:
sum1=sum1+a[i];
看看这是否解决了问题。intsum1=sum1+a[I];
这里,sum1被创建为局部变量,因此当您离开循环时,该变量将消失,您将得到上面为值为0的循环声明的sum1。呈现的代码不是a,但您应该从int sum1=sum1+a[i];
中删除int
。该代码是否会提交给“在线法官”编码站点?如果是这样的话,让我警告您,实现三重嵌套循环解决方案肯定会出现“超时”错误。