演算法系列 三色旗

2021-06-28 05:53:55 字數 796 閱讀 5683

寫在前面:

我是乙個小小的程式設計師,我的野心是成為乙個全棧工程師!!!

正文:這是我用來記錄學習演算法的乙個系列。希望能與所有人共進步。

這個演算法小心一點,有點繞腦

/********************************

* * 演算法:三色旗

* * 問題: 假設有一條繩子,上面有紅、白、藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您

* 希望將之分類,並排列為藍、白、紅的順序,要如何移動次數才會最少,注意您只能在繩子上

* 進行這個動作,而且一次只能調換兩個旗子。

* * 解決: 在乙個繩子上移動,從開頭起,以白旗為中心,遇到藍旗就放白旗左邊,紅旗放右邊。。

* ** *

* *********************************/

#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 從前向後設定紅旗的最後位置,如果該位置不是紅旗,向後掃瞄旗子佇列,如...