所以,我正在学习 C++ 课程,其中一个问题是编写代码来查找 2D 数组的鞍点(最大行,最小列)。我的代码不会对提供的示例输入产生任何问题,但本身不会通过某些测试用例。我可以帮忙吗? 约束 - 5*5 数字网格(特殊测试用例时使用 15 表示数组大小)
#include<iostream>
using namespace std;
int main(){
int max[15], min[15];
int a[15][15];
for(int i = 1; i <= 5; i++){
for(int j = 1; j <= 5; j++){
cin >> a[i][j];
}
}
for(int i = 1; i <= 5; i++){
min[i] = 99999999;
}
for(int i = 1; i <= 5; i++){
for(int j = 1; j <= 5; j++){
if(a[i][j] < min[j]){
min[j] = a[i][j];
}
if(a[i][j] > max[i]){
max[i] = a[i][j];
}
}
}
for(int i = 1; i <= 5; i++){
for(int j = 1; j <= 5; j++){
if(a[i][j] == min[j] && a[i][j] == max[i]){
cout << i << ' ' << j << ' ' << a[i][j] << endl;
return 0;
}
}
}
cout << "not found" << endl;
return 0;
}
关于我的尝试,我无话可说,因为我不知道该问题的测试用例实际上是什么。
代码中的一个错误是您使用的是未初始化的
max
数组。这会导致您的代码具有未定义的行为。
这样就更好了
for(int i = 1; i <= 5; i++){
min[i] = 99999999;
max[i] = -99999999;
}