美文网首页
1.常用算法编程-鞍点

1.常用算法编程-鞍点

作者: ProfessorFan | 来源:发表于2022-05-05 15:32 被阅读0次

    1.一个二维数组中,规定第i行中最小值且是第j列中的最大值,则称该元素为二维数组(二维矩阵)的一个鞍点,编写一个算法,找出这个二维数组中所有的鞍点

    解题思路:
    1.找出每一行中最小的数字
    2.该行最小的数字,所在的列的最大数字
    3.判断两个数字 是否相等 && 两个数字 的 i,j 是否相等,如果相等,这个就是鞍点,如果不相等,就不是鞍点

    示例函数代码

    void saddle (int a[][4],int n,int m){
        
        int w_i = 0, w_j = 0, min,max;
        for (int i = 0; i < n; i++) {
            
            min = a[i][0];
            w_i = i;
            w_j = 0;
            for (int j = 1; j < m; j++) {
                if (a[i][j] < min) {
                    min = a[i][j]; // 这里是找出每一行最小的 数字
                    w_i = i;
                    w_j = j;
                }
            }
            printf("第 %d 行 最小的值为 %d \n",w_i,min);
    
            // 判断每一行最小的那个数字,是不是该列的最大的值
            max = a[0][w_j];
            int l_x = 0;
            for (int i = 0; i < n; i++) {
                if (a[i][w_j] > max) {
                    max = a[i][w_j];
                    l_x = i;
                }
            }
            
            if (max == min  && l_x == w_i) {
                printf("第 %d行 第 %d列 %d 是一个鞍点 \n",l_x,w_j,max);
            }
        }
    }
    

    运行结果


    鞍点运行结果.png

    相关文章

      网友评论

          本文标题:1.常用算法编程-鞍点

          本文链接:https://www.haomeiwen.com/subject/ddznyrtx.html