求矩阵的鞍点 即列最小行最大

 1 #include<stdio.h>
 2 #include<stdlib.h> //malloc free  realloc
 3 
 4 /* 查找行最小 列最大的元素 找到之后直接输出 */
 5 void fun1(int arr[][4], int row)// 二维数组 传参需要传递行
 6 {
 7     int m, n;
 8 
 9     for (int i = 0; i < row; ++i)//有多少行 就找多少次
10     {
11         //查找一次的过程 查找这一行的最小值
12         m = 0;//列从0开始的
13         for (int j = 0; j < 4; ++j)
14         {
15             if (arr[i][j] < arr[i][m])//m表示这一行最小的元素 m返回这一行所在列数column
16             {
17                 m = j;
18             }
19         }
20         //arr[i][m] 是这一行最小的元素
21         //找这一列有没有比arr[i][m]更大的元素
22 
23         for (n = 0; n < row; ++n)//arr[0][m] arr[2][m]
24         {
25             if (arr[n][m]>arr[i][m]) //已知m的下标为最小值 即列最小 求行最大 遍历出行的值n 求所在行的最大值
26                 break;
27         }
28         if (n == row){
29             printf("所求的点是[%d,%d]
", i, m);
30         }
31 
32     }
33 }
34 
35 
36 void test()//二维数组和数组指针
37 {
38     int arr[3][4] = {  // arr有三个元素  arr[0]  arr[1] arr[2]
39         9, 7, 4, 5,    //arr[0] 有四个元素  arr[0][0] arr[0][1] arr[0][2] arr[0][3]
40         7, 7, 3, 2,
41         1, 0, 2, 9
42     };
43     printf("arr[0]的大小%d
", sizeof(arr[0])); //第一行的大小   
44     printf("arr[0][0]的大小%d
", sizeof(arr[0][0]));
45     fun1(arr, 3);//表示数组有三行
46 }
47 int main()
48 {
49     test();
50     getchar();
51     return 0;
52 }
原文地址:https://www.cnblogs.com/liugangjiayou/p/11767687.html