马鞍数
题目描述
求一个n×m数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。如下: n=5 m=5
5 6 7 8 9
4 5 6 7 8
3 4 5 2 1
2 3 4 9 0
1 2 5 4 8
则1行1列上的数5就是马鞍数。
输入格式
第一行一个整数t,表示有t组测试数据(t<=10)。
每组测试数据第一行: n m (0<n,m<=10)
第2到n+1行:每行m个整数(每个数都<10)
输出格式
每组测试数据输出若干行:
如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数。
如果不存在马鞍数,则输出一行“not exit”(注意:不包括双引号)。
输入输出样例
输入样例
1
9 8
9 8 7 6 5 4 3 2
8 8 9 9 9 9 9 9
3 7 7 6 5 4 2 1
8 8 3 2 1 7 3 2
7 5 3 2 9 1 3 2
6 3 2 1 9 3 1 3
8 2 1 3 5 8 9 1
1 3 2 1 3 5 6 8
9 3 1 2 3 4 5 8
输出样例
2 2 8
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n,m,i,j;
int col[12],row[12],a[12][12];
bool flag=false;
cin>>t;
for(int k=1;k<=t;k++){
cin>>n>>m;
for(i=1;i<=n;i++)row[i]=INT_MAX;
for(j=1;j<=m;j++)col[j]=INT_MIN;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]<row[i])row[i]=a[i][j];
if(a[i][j]>col[j])col[j]=a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
if(a[i][j]==row[i]&&a[i][j]==col[j]){
cout<<i<<" "<<j<<" "<<a[i][j]<<endl;
flag=true;
}
}
if(!flag)cout<<"not exit"<<endl;
}
return 0;
}