C++ 查找鞍点代码 - 特定情况下出错?

问题描述 投票:0回答:1

所以,我正在学习 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;    
}

关于我的尝试,我无话可说,因为我不知道该问题的测试用例实际上是什么。

c++
1个回答
0
投票

代码中的一个错误是您使用的是未初始化的

max
数组。这会导致您的代码具有未定义的行为。

这样就更好了

for(int i = 1; i <= 5; i++){
    min[i] = 99999999;
    max[i] = -99999999;
}
© www.soinside.com 2019 - 2024. All rights reserved.