描述
给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
格式
输入格式
输入包含一个5行5列的矩阵。
输出格式
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"not found"。
样例
输入样例
11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 2
15 10 11 20 25
输出样例
4 1 8
参考代码
#include <stdio.h>
#include <stdlib.h>
struct an{
int row;
int col;
int sum;
}an[5];
int main()
{
int i,j,a[5][5];
for(i=0;i<5;i++)//找每行最大值
{
int max=0;
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]>max)
{
max=a[i][j];
an[i].row=i;
an[i].col=j;
an[i].sum=max;
}
}
}
int l=0;//鞍点个数
for(i=0;i<5;i++)//遍历存贮每行最大数值的结构体
{
int k=an[i].col;
int min=100000;
for(j=0;j<5;j++)
{
if(a[j][k]<min)
{
min=a[j][k];
}
}
if(min==an[i].sum)
{
printf("%d %d %d\n",an[i].row+1,k+1,min);
l++;
}
}
if(l==0)
{
printf("not found");
}
return 0;
}