1181 二维数组的鞍点
题目描述
找出一个2维数组矩阵的鞍点,即该位置上的元素在该行中最大,在该列中最小,可能不存在鞍点,如果存在多个,输出最小的那个!
输入描述
/*
输入 n,m表示二维矩阵的行数和列数,然后根据行列数输入n*m个数据构成一个二维矩阵。。
*/
4 5
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
输出描述
/*
如果存在鞍点,则输出该鞍点的值,如果不存在则输出not exist。
*/
5
#include<stdio.h>
#include<string.h>
#define N 100
#define M 100
void matirxpoint(int a[N][M],int n,int m){
int counts=0;
int i,j;
int rowmax,columnmin;
int s=0;
int k=0;
int b[M]={0};
for(i=0;i<n;i++){
rowmax = a[i][0];
for(j=0;j<m;j++)
if(a[i][j]>rowmax)
rowmax = a[i][j];
s=0;
for(j=0;j<m;j++)
if(a[i][j]==rowmax){
b[s] = j;
s++;
}
columnmin = rowmax;
for(j=0;j<s;j++){
for(k=0;k<n;k++)
if(columnmin >a[k][b[j]])
break;
if(k==n){
printf("%d
",a[i][b[j]]);
counts++;
}
}
}
if(counts==0)
printf("not exist
");
}
int main(){
int a[N][M]={0};
int i,j;
int n,m;
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
matirxpoint(a,n,m);
}