【问题标题】:Find absolutely max value in 2D array c++ [closed]在二维数组c ++中找到绝对最大值[关闭]
【发布时间】:2016-04-17 12:15:29
【问题描述】:

我为它编写了程序,但有时我得到错误的答案。请帮帮我(x 和 y 是索引)

int main() 
{
int a[1000][1000];
int n,m,i,j,max,k,max1,x,y;
cin>>n>>m;
for(i=0;i<n;i++)
{
    for(j=0;j<m;j++)
    {
        cin>>a[i][j]; 
    }
}

max=a[0][0];
max1=abs(max);
for(i=0;i<n;i++)
{
    for(j=0;j<m;j++) 
    {
        if(abs(a[i][j])>=max1) 
        {
            max=a[i][j];
            k=max; x=i; y=j; 
        } 
    }
}
cout<<k<<endl<<x<<" "<<y; 
}

【问题讨论】:

  • 代码中的一些缩进会有所帮助。
  • 大括号也有帮助。
  • @SelçukCihan 虽然我同意为非平凡循环使用大括号是可取的,但这不是这里的错误来源。

标签: c++ multidimensional-array


【解决方案1】:

您没有在 if 条件下更新 max1。

【讨论】:

    【解决方案2】:

    你的逻辑有点不清楚。 你为什么要为绝对值烦恼?如果您想要具有最高绝对值的值,那么您应该在 for 循环中更新 max1,因为您正在使用它来决定是否需要一个新值。

       if(abs(a[i][j])>=max1) 
            {
                max=a[i][j];
                k=max; x=i; y=j; 
                max1=abs(a[i][j]); //update the absolute value max
            } 
    

    【讨论】:

      【解决方案3】:
          for (j = 0; j<m; j++
          if (abs(a[i][j]) >= max1) 
          max = a[i][j];
          k = max; x = i; y = j;
          }
      cout << k << endl << x << " " << y;
      

      }

      更改:如果 (abs(a[i][j]) >= max1) ------> max1=a[i][j]。你每次都比较 abs ti 相同的固定数 max1 是不变的。

      【讨论】:

        猜你喜欢
        • 2020-09-05
        • 2021-02-18
        • 1970-01-01
        • 2017-04-03
        • 2016-03-11
        • 1970-01-01
        • 2015-04-06
        • 2013-03-20
        • 2021-01-13
        相关资源
        最近更新 更多