鞍點是二維數組中一個特殊的元素,它是本行最大的值,同時又是本列最小的值。
鞍點可能不止一個,也可能沒有。
思路
遍歷尋找每一行的最大值,找到最大值后,記錄其列數,再找其列上的最小值。若最大值,最小值相等,則說明該點為鞍點。
簡單的鞍點算法
假設二維數組每一行,每一列的最值是唯一的,而且只有一個鞍點。
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 }