请编程找出一个M*N矩阵中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!
#include<stdio.h> #define M 100 #define N 100 void FindSaddlePoint(int a[][N], int m, int n){ int i,j,temp,max,min,k,count=0; int maxpos,minpos; for(i=0; i<m; i++){ max = a[i][0]; for(j=0; j<n; j++){ if(a[i][j] > max){ max = a[i][j]; maxpos = j; } } min = a[i][maxpos]; for(k=0; k<m; k++){ if(a[k][maxpos] < min){ min = a[k][maxpos]; minpos = k; } } if(max == min){ printf("a[%d][%d] is %d\n",i,maxpos,max); }else count++; } if(count == m){ printf("No saddle point!\n"); } } int main(){ int m,n,k,i,j; int a[M][N]; printf("Input m,n:\n"); scanf("%d,%d",&m,&n); printf("Input matrix:\n"); for(i=0; i<m; i++){ for(j=0; j<n; j++){ scanf("%d",&a[i][j]); } } FindSaddlePoint(a,m,n); return 0; }