?? 10.32.c
字號:
10.32⑤ 荷蘭國旗問題:設有一個僅由紅、白、蘭
這三種顏色的條塊組成的條塊序列。請編寫一個時
間復雜度為O(n)的算法,使得這些條塊按紅、白、
蘭的順序排好,即排成荷蘭國旗圖案。
實現下列函數:
void HFlag(FlagList &f)
/* "荷蘭國旗"的元素為red,white和blue,*/
/* 分別用字符'0','1'和'2'表示 */
"荷蘭國旗"的順序表的類型FlagList定義如下:
#define red '0'
#define white '1'
#define blue '2'
typedef char ColorType;
typedef struct {
ColorType r[MAX_LENGTH+1];
int length;
} FlagList;
void HFlag(FlagList &f)
{
int r=0,w=0,b=0,i,j;
for(i=1;i<=f.length;i++)
{if(f.r[i]==red) r++;
else if(f.r[i]==white) w++;
else b++;
}
for(i=1,j=1;j<=r;j++,i++) f.r[i]=red;
for(j=1;j<=w;j++,i++) f.r[i]=white;
for(j=1;j<=b;j++,i++) f.r[i]=blue;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -