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


     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 }
  • 相关阅读:
    Visual Studio2017 无法添加引用的解决方法
    第13周学习进度
    mininet之miniedit可视化操作
    构建之法阅读笔记05
    软件工程课堂练习找水王续
    第12周学习进度
    VS2015做单元测试
    学习调用第三方的WebService服务
    软件工程课堂练习找水王
    第11周学习进度
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11767687.html
Copyright © 2020-2023  润新知