若在矩阵A 中存在一个元素ai,j(0≤i≤n-1,0≤j≤m-1),该元素是第i行元素中最小值且又是第j 列元素中最大值,则称此元素为该矩阵的一个马鞍点。假设以二维数组存储矩阵A,试设计一个求该矩阵所有马鞍点的算法,并分析最坏情况下的时间复杂度。
1 #include
2 #include
3 #include
4 #define maxrow 20
5 #define maxcolumn 20
6 typedef int Elementtype;//???????????? 7
8 void Read(int m,int n,Elementtype A[][maxcolumn])
9 { 10 int i,j; 11 printf("Enter these elements :\n");
12 for(i=0;i
14 for(j=0;j
15 {
16 scanf("%3d",&A[i][j]);
17 }
18 } 19 }
20 21 void RowMin(int m,int n,Elementtype A[][maxcolumn],char Mark1[][maxcolumn])
22 { 23 int i,j,loc;//???????loc?????loc????????
24 Elementtype tmp;
25 for(i=0;i
28 tmp=A[i][0];
29 for(j=1;j
30 {
31 if(A[i][j]
32 {
33 tmp=A[i][j];
34 loc=j;//??????????????????j???????j?for????? 35 }
36 }
37 Mark1[i][loc]='@'; 38 for(j=0;j
39 {
40 if(A[i][j]==tmp)
41 { 42 Mark1[i][j]='@'; 43 }
44 }
45 }
46 }
47
48 void ColumnMax(int m,int n,Elementtype A[][maxcolumn],char Mark2[][maxcolumn])
49 {
50 int i,j,loc;
51 Elementtype tmp;
52 for(j=0;j
55 tmp=A[0][j];
56 for(i=1;i
57 {
58 if(A[i][j]>tmp)
59 {
60 tmp=A[i][j]; 61 loc=i; 62 }
63 }
64 Mark2[loc][j]='@';
65 for(i=0;i
66 {