在二维数组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 ++中找到绝对最大值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用二维数组c找到最小数[关闭]

C语言之二维数组

C在函数中传递二维数组会给我分段错误

C语言如何在子函数中对主函数中的二维数组值进行修改? 二维数组已经在主函数中用动态数组分配了空间。

c语言问题:c语言中二维数组在内存中怎样存储?

C++中如何在一个二维数组中查找某个值