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; }