鞍点
鞍点是二维数组中一个特殊的元素,它是本行最大的值,同时又是本列最小的值。
鞍点可能不止一个,也可能没有。
思路
遍历寻找每一行的最大值,找到最大值后,记录其列数,再找其列上的最小值。若最大值,最小值相等,则说明该点为鞍点。
简单的鞍点算法
假设二维数组每一行,每一列的最值是唯一的,而且只有一个鞍点。
1 #include <stdio.h> 2 3 main() 4 { 5 int a[3][3]={2,4,8,5,6,9,1,3,10}; 6 int max,min,row=0,col=0; 7 for(int i=0;i<3;i++) 8 { 9 max=a[i][0]; 10 for(int j=0;j<3;j++) //依次求每一行元素的最大值 11 { 12 if(a[i][j]>max) 13 { 14 max=a[i][j]; 15 row=j; //并记录最大值所在位置的列数 16 } 17 } 18 min=a[0][row]; 19 for(int k=0;k<3;k++) //求特定列的元素的最小值 20 { 21 if(a[k][row]<min) 22 { 23 min=a[k][row]; 24 col=k; //并记录最小值所在位置的行数 25 } 26 } 27 if(max==min) printf("%d %d\n",col,row);//鞍点 28 } 29 30 }