什么是鞍点?
题目描述
尝试寻找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。如果没有鞍点,则输出“no exists”。
输入描述
第一行输入 n n n ,第2至第 n + 1 n+1 n+1行,输入 n × n n\times n n×n的二维数组
输出描述
鞍点的值或提示信息
样例
输入
3
1 2 3
4 5 9
6 7 8
输出
3
提示
1 ≤ n ≤ 10 1\le n\le 10 1≤n≤10
来源
鲁东C语言实验5
C++实现
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> arr[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
bool flag1 = true, flag2 = true;
for (int k = 0; k < n; k++) {
if (k != i && arr[k][j] < arr[i][j]) {
flag1 = false;
break;
}
}
for (int k = 0; k < n; k++) {
if (k != j && arr[i][k] > arr[i][j]) {
flag2 = false;
break;
}
}
if (flag1 && flag2) {
cout << arr[i][j];
return 0;
}
}
}
cout << "no exists";
return 0;
}