在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。
输入
第1行是两个整数n(n<1000)和m(m<1000),表示矩阵有n行m列。 接下来n行,每行包含m个整数,表示矩阵值。
输出
仅一行。如果鞍点存在,则按指定格式输出鞍点;否则,输出“Not Found”。
样例输入
3 4
1 2 13 4
7 8 10 6
3 5 9 7
样例输出
a[2][2]=9
解:
#include<stdio.h>
int main()
{
int a[100][100],m,n,s=0,b[1000],c[1000],max,min,a1,a2,a3,p1=0;
scanf("%d%d",&m,&n);
for(int x=0;x<m;x++)
{
for(int y=0;y<n;y++)
{
scanf("%d",&a[x][y]);
}
}
for(int x=0;x<m;x++)
{
max=a[x][0];
for(int y=0;y<n;y++)
{
if(a[x][y]>max)
{
max=a[x][y];
}
if(y==n-1&&max==a[x][0])
{
b[s]=max;
s++;
}
if(y==n-1&&max!=a[x][0])
{
b[s]=max;
s++;
}
}
}
s=0;
for(int y=0;y<n;y++)
{
min=a[0][y];
for(int x=0;x<m;x++)
{
if(a[x][y]<min)
{
min=a[x][y];
}
if(x==m-1&&min==a[0][y])
{
c[s]=min;
s++;
}
if(x==m-1&&min!=a[0][y])
{
c[s]=min;
s++;
}
}
}
for(int x=0;x<m;x++)
{
for(int y=0;y<n;y++)
{
for(int z=0;z<m;z++)
{
for(int o=0;o<n;o++)
{
a1=a[x][y];
a2=b[o];
a3=c[z];
if(a1==a2&&a2==a3)
{
p1=1;
printf("a[%d][%d]=%d",x,y,a[x][y]);
}
}
}
}
}
if(p1==0)
{
printf("Not Found");
}
return 0;
}
输入
10 7
44 12 80 88 51 41 58
1 64 93 92 27 20 63
60 38 36 27 84 61 23
37 20 48 89 69 54 29
80 50 78 72 61 35 13
7 100 94 93 8 34 22
59 34 34 51 65 98 12
13 75 98 17 15 57 13
58 100 25 60 61 91 11
88 63 95 61 6 47 33
输出
Not Found