问题描述:
在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。第一行输入行n、列m,0<n<100,0<m<100,随后输入矩阵数据。存在则输出行列,不存在则输出“No Exist”。
代码展示:
1 #include<stdio.h>
2 #define N 100
3 void fun(int a[N][N], int n, int m);
4 int main(){
5 int a[N][N];
6 int i,j;
7 int n,m;
8 printf("请输入行n和列m:");
9 scanf("%d %d",&n,&m);
10 printf("请输入矩阵:\n");
11 for(i=0;i<n;i++){
12 for(j=0;j<m;j++){
13 scanf("%d",&a[i][j]);
14 }
15 }
16 fun(a,n,m);
17 return 0;
18 }
19 void fun(int a[N][N], int n, int m){
20 int count = 0;
21 int max,min;
22 int i,j,k;
23 for(i=0;i<n;i++){ //找马鞍点
24 max = 0;
25 for(j=1;j<m;j++){ //找行最大坐标
26 if(a[i][j] > a[i][max]){
27 max = j;
28 }
29 }
30 min = 0;
31 for(k=1; k<n; k++){ //找行最大元素的列中的最小坐标
32 if(a[k][max] < a[min][max]){
33 min = k;
34 }
35 }
36 if(min == i){ //比较列最小坐标是不是本行的坐标
37 count++;
38 printf("第%d个马鞍点是:(%d,%d)\n",count,i,j);
39 }
40 }
41 if(count == 0){
42 printf("No Exist");
43 }
44 }
运行截图: