给定一个n*n矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数。一个矩阵A也可能没有鞍点。
你的任务是找出矩阵A的鞍点。
输入
输入有2行,
第1行为一个正整数n(1≤n≤10),表示矩阵A为n行n列。
第2行到第n+1行,每行都是用空格隔开的n正整数,表示矩阵A。
输出
输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。
样例输入
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
样例输出
2 1
代码
#include<iostream>
using namespace std;
int main(){
int n;
int a[15][15];
cin>> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
cin>>a[i][j];
}
}
int rowMax[15],colMin[15];
for(int i = 0; i < n; i++){
int max = a[i][0];
for(int j = 0; j < n; j++){
if(a[i][j] > max) max = a[i][j];
}
rowMax[i] = max;
}
for(int j = 0; j < n; j++){
int min = a[0][j];
for(int i = 0; i < n; i++){
if(a[i][j] < min) min = a[i][j];
}
colMin[j] = min;
}
int flag = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(rowMax[i] == colMin[j]) {
cout<< i<< " "<< j<< endl;
flag = 1;
}
}
}
if(!flag) cout<< "NONE"<< endl;
return 0;
}