查找列'k'右侧的最大元素

Finding max element which is to the right of column 'k'

本文关键字:元素 查找      更新时间:2023-10-16

我有一个任务,要求我找到列'k'右侧的max元素(据我所知,我需要在k+1列中找到最大值(。我显然做错了什么,因为当我运行代码时,最大值等于0。我一定是错过了一个错误,所以如果有任何帮助,我们将不胜感激。这是我的代码:

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int main() {
int n,m,k;
int max=-1000001;
int  a[10][10];
cin>>n>>k;
m=n;
for (int i=0;i<n;i++) {
for (int j=0;j<m;j++) {
cin>>a[i][j];
}
}
for(int i=0;i<n;i++)
{
for (int j=0;j<m+1;j++)
{
if(a[i][j]>max && a[i][j]!=max && j==k+1)
max=a[i][j];
} 
}
if (k>=m)
cout<<"No";
else
cout<<max;    
}

这是输入:

3 2
1 2 3
5 5 2
6 3 4

这是我应该得到的输出:

4

要获得所需的预期输出,只需编写即可

int max = a[0][k+1];
for ( int i = 1; i < n; i++ )
{
if ( max < a[i][k+1] ) max = a[i][k+1];
}

我假设k + 1小于m。这就是的支票

如果(k>=m(cout<lt;"否";

应在循环之前完成。例如

int max;
if ( k + 1 < m )
{
max = a[0][k+1];
for ( int i = 1; i < n; i++ )
{
if ( max < a[i][k+1] ) max = a[i][k+1];
}
}
if ( not ( k + 1 < m ) )
cout<<"No";
else
cout<<max;    

对于这个输入

3 2

程序将发出"否",因为当k等于2时k+1产生3并且3不是有效索引。此输入的有效索引范围为[0, 2]

你可以使用我对这个输入的回答中提供的代码来获得预期的结果

3 1