在二维数组c ++中找到绝对最大值[关闭]
Posted
技术标签:
【中文标题】在二维数组c ++中找到绝对最大值[关闭]【英文标题】:Find absolutely max value in 2D array c++ [closed] 【发布时间】: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 虽然我同意为非平凡循环使用大括号是可取的,但这不是这里的错误来源。 【参考方案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 是不变的。
【讨论】:
以上是关于在二维数组c ++中找到绝对最大值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章