c语言寻找马鞍点

 

 

#include <stdio.h>

#define ROWS 4
#define COLS 5

//寻找马鞍点, 在一个二位数组上,每行最小值存为Min[i],每列最大值存为Max[j]
//若元素A[i][j]即在Min[i]又在Max[j],则是马鞍点。

void findSaddlePoint(int A[4][5],int m, int n){
    int i,j;
    int Max[5],Min[4];
    //计算出每行最小的元素,存入Min[4]的数组中
    for(i = 0; i < m ; i++){
        int min = A[i][0];
        for (j = 0; j < n; j++)
        {
            if(A[i][j] < min) min = A[i][j]; 
        }
        Min[i] = min;
    }

    //计算出每列最打的元素,存入Max[5]的数组中
    for(j = 0; j < n ; j++){
        int max = A[0][j];
        for (i = 0; i < m; i++)
        {
            if(A[i][j] > max) max = A[i][j]; 
        }
        Max[j] = max;
    }

    //最后双重循环判断马鞍点

    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            //if(A[i][j] == Min[i] && A[i][j] == Max[j])
            if(Min[i]==Max[j])
                printf("saddlePoint : (%d,%d) \n",i,j);

}

int main() {
    int matrix[ROWS][COLS] = {
        {1, 2, 3, 4, 3},
        {4, 5, 3, 7 ,3 },
        {7, 8, 3, 10, 3},
        {6, 8, 3, 10, 3},
    };
    
    findSaddlePoint(matrix,4, 5);
    return 0;
}

 

posted @ 2025-08-16 14:16  与f  阅读(16)  评论(0)    收藏  举报