计算鞍点
题目描述
给定一个 5×55 \times 55×5 的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中,第 444 行第 111 列的元素就是鞍点,值为 888。
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
输入格式
输入包含一个 555 行 555 列的矩阵。
输出格式
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出 not found
。
样例 #1
样例输入 #1
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
样例输出 #1
4 1 8
参考如下
#include <stdio.h>
int main()
{
int arr[5][5]={},i=0,j=0,m=0,n=0,min,found=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&arr[i][j]);
i=0;j=0;
for(i=0;i<5;i++)
{
m=i;n=0;
for(j=0;j<5;j++)
{
if(arr[m][n]<arr[i][j])
{
m=i;n=j;
}
}
min=arr[m][n];
for(j=0;j<5;j++)
{
if(min>arr[j][n])
min=arr[j][n];
}
if(arr[m][n]==min)
{
found=1;
break;
}
}
if(found==1)
printf("%d %d %d",m+1,n+1,arr[m][n]);
else
printf("not found");
return 0;
}