卡片換位
你玩過華容道的遊戲嗎?
這是個類似的,但更簡單的遊戲。
看下面 3 x 2 的格仔
在其中放5張牌,其中a代表關羽,b代表張飛,* 代表士兵。
還有乙個格仔是空著的。
你可以把一張牌移動到相鄰的空格中去(對角不算相鄰)。
遊戲的目標是:關羽和張飛交換位置,其它的牌隨便在**都可以。
輸入格式:
輸入兩行6個字元表示當前的局面
輸出格式:
乙個整數,表示最少多少步,才能把ab換位(其它牌位置隨意)
例如,輸入:
* a**b
程式應該輸出:
17再例如,輸入:
a b***
程式應該輸出:
12資源約定:
峰值記憶體消耗 < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
思路:用pair來描述乙個座標,對於每個局面都只記錄a,b,空格的座標,剩下三個*不關注他們在哪,不用記錄。對於每個狀態轉移,視為空格在移動。然後bfs。用set記錄已出現過的局面;
藍橋杯2016初賽 卡片換位
你玩過華容道的遊戲嗎?這是個類似的,但更簡單的遊戲。看下面 3 x 2 的格仔 a b 在其中放5張牌,其中a代表關羽,b代表張飛,代表士兵。還有乙個格仔是空著的。你可以把一張牌移動到相鄰的空格中去 對角不算相鄰 遊戲的目標是 關羽和張飛交換位置,其它的牌隨便在 都可以。輸入輸入存在多組測試資料,對...
藍橋杯2016初賽 卡片換位 BFS
題目描述 你玩過華容道的遊戲嗎?這是個類似的,但更簡單的遊戲。看下面 3 x 2 的格仔 a b 在其中放5張牌,其中a代表關羽,b代表張飛,代表士兵。還有乙個格仔是空著的。你可以把一張牌移動到相鄰的空格中去 對角不算相鄰 遊戲的目標是 關羽和張飛交換位置,其它的牌隨便在 都可以。輸入 輸入存在多組...
藍橋杯 由卡片換位引發的優化問題
卡片問題,之前的我的 使用的是map,搜尋效率不高。現由群裡的一位大牛給出的乙個由 康拓展開的狀態編碼優化演算法 感謝這位 追夢 大牛 include include include include using namespace std 狀態結構體 struct state int be,en b...