1. 程式人生 > 實用技巧 >經典演算法大全51例——4.三色旗

經典演算法大全51例——4.三色旗

經典演算法大全51例——4.三色旗

  • 演算法目錄合集
    • 地址
    • 說明
  • 題目
    • 原理分析
    • 程式碼實現——Java
    • 相關題目其他變形:
      • 1.顏色分類(來源:力扣LeetCode)
      • 2.五色旗
        • 分析
        • 程式碼實現
  • 官方題解
    • 解法
    • 程式碼——C語言

演算法目錄合集

地址

  演算法目錄合集

說明

  該地址指向所有由本人自己所經歷的演算法習題(也有可能僅僅是一個入門的案例或者是經典案例),僅僅為我做過而且比較有意思的,也許還會有一些我自己想出來的,出於興趣寫在這裡,具體格式我會在下面列明,總目錄也會在這裡出現,方便查閱以及自己進行復習回顧。

題目

  三色旗的問題最早由E.W.Dijkstra所提出,他所使用的用語為Dutch Nation Flag(Dijkstra為荷蘭人),而多數的作者則使用Three-Color Flag來稱之。
  假設有一條繩子,上面有紅、白、藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列為藍、白、紅的順序,要如何移動次數才會最少,注意您只能在繩子上進行這個動作,而且一次只能調換兩個旗子。

  特別說明

  經過我對題目的分析以及自己嘗試過的其他答案和自己所進行的其他變形,我有個拙見:那就是這個旗子原本在繩子上的位置應該是不發生改變的(假如繩子分為0、1、2、3、4、5、6、7,這八個位置,其中2、3、4有旗子,操作過之後,旗子應該所在位置還是2、3、4),如果不加這個限制,是很容易討巧的,具體我會在後面進行說明。

原理分析

  首先,大家不要討巧,不要討巧,不要討巧!!!否則三體星人會懲戒你的!!!哈哈哈,這題可千萬不要把顏色給用1,2,3給代表,然後再來個sort,太low了