马鞍数是指矩阵nm中在行上最小而在列上最大的数。如:数阵nm,其中 n=4,m=5
1 6 7 8 9
4 5 6 7 8
3 4 5 2 1
5 6 7 6 8
则第4行第1列的数字“5”即为该数阵的一个马鞍数,答案有且只有一个。
【输入格式】
第一行:两个数n和m(1≤m≤100,1≤n≤100);
以下n行:每行m个数。
【输出格式】
输出马鞍数的位置。
【输入样例】
4 5
1 6 7 8 9
4 5 6 7 8
3 4 5 2 1
5 6 7 6 8
【输出样例】
4 1
#include<bits/stdc++.h>
using namespace std;
int n,m,a[105][105],maxi[105][105],mini[105][105];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
{
int minii=1e9,x;
for(int j=1;j<=m;j++)
if(a[i][j]<minii)
{
minii=a[i][j];
x=j;
}
mini[i][x]=minii;
}
for(int i=1;i<=n;i++)
{
int maxii=0,y;
for(int j=1;j<=m;j++)
if(a[j][i]>maxii)
{
maxii=a[j][i];
y=j;
}
maxi[y][i]=maxii;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(maxi[i][j]!=0&&mini[i][j]!=0)
{
cout<<i<<" "<<j<<endl;
return 0;
}
cout<<"not found"<<endl;
return 0;
}