鞍点

鞍点是二维数组中一个特殊的元素,它是本行最大的值,同时又是本列最小的值

鞍点可能不止一个,也可能没有。

 

思路

遍历寻找每一行的最大值,找到最大值后,记录其列数,再找其列上的最小值。若最大值,最小值相等,则说明该点为鞍点。

 

简单的鞍点算法

假设二维数组每一行,每一列的最值是唯一的,而且只有一个鞍点。

 

 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 }

 

posted @ 2019-03-21 18:11  jawide  阅读(1752)  评论(0编辑  收藏  举报