请写应该程序,找出给定矩阵的马鞍点。若一个矩阵中的某元素在其所在行最小而在其所在列最大,则元素为矩阵的一个马鞍点。
输入数据由m+1行构成,第一行只有两个整数m和n,分别表示矩阵的行数和列数,
接下来m行,每行n个表示矩阵元素。输出马鞍点数,每行一个,为行列以及马鞍数。如果不存在,则输出“not exist”。
#include<stdio.h>
int main(){
int m,n;
printf("请输入行数和列数:");
scanf("%d %d",&m,&n);
int a[m][n],b[m*n],c[m*n];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
//行最小
for(int i=0;i<m;i++){
b[i]=a[i][0];
for(int j=1;j<n;j++){
if(b[i]>a[i][j]){
b[i]=a[i][j];
}
}
}
//列最大
for(int i=0;i<n;i++){
c[i]=a[0][i];
for(int j=1;j<m;j++){
if(c[i]<a[j][i]){
c[i]=a[j][i];
}
}
}
int count=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(b[i]==c[j]){
count++;
}
}
}
if(count==0)
printf("not exist\n");
else
printf("马鞍点个数有%d个",count);
return 0;
}