?? 5.19.c
字號(hào):
5.19④ 若在m行n列的矩陣A中,某個(gè)元素aij是
第i行中的最小值,同時(shí)有是第j列中的最大值,
則稱此元素為該矩陣中的一個(gè)馬鞍點(diǎn)。假設(shè)以二
維數(shù)組存儲(chǔ)矩陣A,試編寫求出矩陣中所有馬鞍點(diǎn)
的算法,并分析你的算法在最壞情況下的時(shí)間復(fù)
雜度。
要求實(shí)現(xiàn)以下函數(shù):
void SaddlePoint(Array2D &a, int m, int n);
/* 求出矩陣a中所有馬鞍點(diǎn) */
/* 注意:行號(hào)和列號(hào)分別為0..m-1和0..n-1 */
二維數(shù)組類型Array2D的定義:
typedef char Array2D[MAXLEN][MAXLEN];
調(diào)用以下函數(shù)輸出馬鞍點(diǎn):
void outSP(int x, int y);
/* Use this function to output your point. */
void SaddlePoint(Array2D &a, int m, int n)
/* 求出矩陣a中所有馬鞍點(diǎn) */
/* 注意:行號(hào)和列號(hào)分別為0..m-1和0..n-1 */
{int i,j,k,min,exist;
for(i=0;i<m;i++)
{
min=a[i][0];
for(j=0;j<n;j++)
if(a[i][j]<min) min=a[i][j]; //求出行中最小的值
for(j=0;j<n;j++)
{ //掃描整行
if(a[i][j]==min) //選出i行中可能為馬鞍點(diǎn)的點(diǎn)(行最小值)
{for(exist=1,k=0;k<m;k++) //判斷行最小點(diǎn)是否為列最大點(diǎn)
if(a[k][j]>min){exist=0;break;}
if(exist==1) outSP(i,j);}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -