1122:计算鞍点
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 25538 通过数: 14389
【题目描述】
给定一个5×55×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
例如:在下面的例子中(第44行第11列的元素就是鞍点,值为88 )。
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
【输入】
输入包含一个55行55列的矩阵。
【输出】
如果存在鞍点,输出鞍点所在的行、列及其值,如果不存在,输出"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> int main() { int a[5][5],s[5][5]={0}; int found=0; int i,j; int max_n,max_j,min_n,min_i; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); for(i=0;i<5;i++) { max_n=-1; max_j=-1; for(j=0;j<5;j++) { if(a[i][j]>max_n) { max_n=a[i][j]; max_j=j; } } s[i][max_j] += 1; } for(j=0;j<5;j++) { min_n=1000000; min_i=-1; for(i=0;i<5;i++) { if(a[i][j]<min_n) { min_n=a[i][j]; min_i=i; } } s[min_i][j] += 1; } for(i=0;i<5;i++) { for(j=0;j<5;j++) { if(s[i][j]==2) { found=1; printf("%d %d %d\n",i+1,j+1,a[i][j]); } } } if(!found) printf("not found\n"); return 0; }