1092: 马鞍数
Time Limit: 1 Sec Memory Limit: 128 MBDescription
求一个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 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列上的数就是马鞍数。
Input
共n+1行,第一行: n m (n,m<10) 第2到n+1行:每行m个整数(每个数都<10)
Output
输出若干行:如果存在马鞍数,则输出所有马鞍数,每行一个,为行和列以及马鞍数。 如果不存在马鞍数,则输出'not exit'。
Sample Input
5 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
Sample Output
1 1 5
HINT
Source
#include<iostream>
using namespace std;
main()
{
int a[100][100];
int n,m,s=0,t=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++) //输入
{
cin>>a[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
s=0;
for(int k=0;k<m;k++)
{
if(a[i][j]<=a[i][k]) //判断行最小
{s++;}
else
{break;}
}
for(int l=0;l<n;l++)
{
if(a[i][j]>=a[l][j]) //判断列最大
{s++;}
else
{break;}
}
if(s==m+n)
{
cout<<i+1<<" "<<j+1<<" "<<a[i][j]<<endl; //输出
t++;
}
}
}
if(t==0)
{cout<<"not exit"<<endl;} //若没有满足题意的马鞍数,输出not exit
}