0055 在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。第一行输入行n、列m,0<n<100,0<m<100,随后输入矩阵数据。存在则输出行列,不存在则


问题描述:

  在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。第一行输入行n、列m,0

代码展示:

 1 #include
 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){
12         for(j=0;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//找马鞍点 
24         max = 0;
25         for(j=1;j//找行最大坐标 
26             if(a[i][j] > a[i][max]){
27                 max = j;
28             } 
29         }
30         min = 0;
31         for(k=1; 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 }

运行截图:

相关