寫在前面:
我是乙個小小的程式設計師,我的野心是成為乙個全棧工程師!!!
正文:這是我用來記錄學習演算法的乙個系列。希望能與所有人共進步。
這個演算法小心一點,有點繞腦
/********************************
* * 演算法:三色旗
* * 問題: 假設有一條繩子,上面有紅、白、藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您
* 希望將之分類,並排列為藍、白、紅的順序,要如何移動次數才會最少,注意您只能在繩子上
* 進行這個動作,而且一次只能調換兩個旗子。
* * 解決: 在乙個繩子上移動,從開頭起,以白旗為中心,遇到藍旗就放白旗左邊,紅旗放右邊。。
* ** *
* *********************************/
#include #include #include #define blue 'b'
#define white 'w'
#define red 'r'
int main()
; //這是繩子上的旗子們..
//wflag 表示白旗的位置,bflag表示藍旗的位置,rflag表示紅旗的位置,設定白旗和藍旗從最左邊開始,紅旗位置從最右邊開始
int wflag = 0,bflag = 0,rflag = strlen(color)-1;
int i;
printf("排序前繩子上的旗子順序為:");
for(i=0;i
小尾巴:
吾王劍之所指,即吾等身之所向。
三色旗演算法
演算法描述 假設有一條繩子,上面有紅 白 藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列為藍 白 紅的順序,要如何移動次數才會最少,注意您只能在繩子上進行這個動作,而且一次只能調換兩個旗子。示意圖 解法 在一條繩子上移動,在程式中也就意味只能使用乙個陣列,而不使用其它的陣列...
三色旗演算法
參考 三色旗的問題最早由e.w.dijkstra所提出,他所使用的用語為dutch nation flag dijkstra為荷蘭人 假設有一條繩子,上面有紅 白 藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列為藍 白 紅的順序,要如何移動次數才會最少,注意您只能在繩子上進...
趣味演算法 三色旗
趣味演算法 三色旗 一條繩子掛紅白藍三種顏色的旗子,且排列無序,現用程式把三種旗子同色歸類,順序為紅 白 藍,每次只能交換2面旗子,採用最少步驟完成。演算法描述 只需把紅色和藍色的旗子進行交換,紅旗和籃旗都就位後,白旗自然就位。1 從前向後設定紅旗的最後位置,如果該位置不是紅旗,向後掃瞄旗子佇列,如...