在二维数组c++中找到绝对最大值

Find absolutely max value in 2D array c++

本文关键字:最大值 二维数组 c++      更新时间:2023-10-16

我为它编写了程序,但有时我会得到错误的答案。请帮我(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; 
}

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

您的逻辑有些不清楚。你为什么为绝对价值而烦恼?如果您想要具有最高绝对值的值,那么您应该在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
        } 
    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;

}

更改:if(abs(a[i][j])>=max1)------>max1=a[i][j]。你每次都会将abs ti与不变的固定数字max1进行比较。