?? 3.20.c
字號:
3.20③ 假設以二維數組g(1..m,1..n)表示一個圖像
區域,g[i,j]表示該區域中點(i,j)所具顏色,其值
為從0到k的整數。編寫算法置換點(i0,j0)所在區域
的顏色。約定和(i0,j0)同色的上、下、左、右的鄰
接點為同色區域的點。
實現下列函數:
void ChangeColor(GTYPE g, int m, int n,
char c, int i0, int j0);
/* 在g[1..m][1..n]中,將元素g[i0][j0] */
/* 所在的同色區域的顏色置換為顏色c */
表示圖像區域的類型定義如下:
typedef char GTYPE[m+1][n+1];
Stack是一個已實現的棧。
可使用的相關類型和函數:
typedef int SElemType; // 棧Stack的元素類型
Status StackInit(Stack &s, int initsize);
Status Push(Stack &s, SElemType e);
Status Pop(Stack &s, SElemType &e);
Status StackEmpty(Stack s);
Status GetTop(Stack s, SElemType &e);
void ChangeColor(GTYPE g, int m, int n,
char c, int i0, int j0)
/* 在g[1..m][1..n]中,將元素g[i0][j0] */
/* 所在的同色區域的顏色置換為顏色c */
{
char old=g[i0][j0];
g[i0][j0]=c;
if(1<i0 && g[i0-1][j0]==old) ChangeColor(g,m,n,c,i0-1,j0);
if(m>i0 && g[i0+1][j0]==old) ChangeColor(g,m,n,c,i0+1,j0);
if(1<j0 && g[i0][j0-1]==old) ChangeColor(g,m,n,c,i0,j0-1);
if(n>j0 && g[i0][j0+1]==old) ChangeColor(g,m,n,c,i0,j0+1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -