最大子数组总和。哪里错了?

时间:2019-06-23 04:49:51

标签: 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;

对于输入1,2,3,4,我的答案是0,而不是10

2 个答案:

答案 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