//找出一个二维数组中的鞍点,即行最大,列最小 谭浩强习题P63
/**
* 2012 容易
* 实现二维数组“马鞍点”(即二维数组中某个数在所在行最大,而在所在列最小,马鞍点至多有一个,或者0个)的编程计算
*/
#include <stdio.h>
#define N 4
#define M 5
int main(){
int i,j,k,a[N][M],max,maxj,flag;
printf("please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++){
max = a[i][0];
maxj = 0;
for(j=0;j<M;++j){
if(a[i][j]>max){
max=a[i][j];
maxj = j;
}
}
flag = 1;//先假设是鞍点,以flag为1为代表
for(k=0;k<N;k++){
if(max>a[k][maxj]){
flag = 0;
continue;
}
}
if(flag){
printf("a[%d][%d]=%d\n",i,maxj,max);
break; //自己:马鞍点至多有一个 搞不明白为啥马鞍点至多有一个 暂略
}
}
if(!flag) printf("It is not exist!\n");
return 0;
}
/**
* 测试数据
please input matrix:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
a[0][4]=5
please input matrix:
1 2 3 4 11
2 4 6 8 12
3 6 9 10 15
4 8 12 16 7
It is not exist!
*/