题目描述
一个矩阵的鞍点,是指某元素在该行上最大、该列上最小。现在请你找出矩阵的鞍点,矩阵也可能没有鞍点,如果没有鞍点,输出 "NO!"
输入格式
第一行一个正整数 n ,表示矩阵的长宽为 n ;
接下来有 n 行,每行 n 个正整数, ai ;
输出格式
如果没有鞍点则显示 "NO!" ,有则输出每个鞍点的坐标和值(一个鞍点占一行)。
样例输入
4
19 23 21 13
61 25 34 45
67 32 39 29
39 98 27 56
样例输出
1 2 23
样例分析
如上所述。
数据范围
100%100% 的数据:1≤N≤10 ;
代码:
#include<bits/stdc++.h>
using namespace std;
int a[20][20];
int n,b,c;
int flag;
int main() {
int mx,mn;
cin>>n;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin>>a[i][j];
}
}
for(int i=1; i<=n; i++) {
mx=0,mn=99999999;
for(int j=1; j<=n; j++) {
if(a[i][j]>mx) {
mx=a[i][j];
b=j;
}
}
for(int k=1; k<=n; k++) {
if(a[k][b]<mn) {
mn=a[k][b];
c=k;
}
}
if(mx==mn && c==i) {
cout<<c<<" "<<b<<" "<<mx<<endl;
flag=1;
}
}
if(flag==0) {
cout<<"NO!";
}
}