藍橋杯 2016CC 卡片換位

2022-09-10 18:21:20 字數 779 閱讀 1126

卡片換位

你玩過華容道的遊戲嗎?

這是個類似的,但更簡單的遊戲。

看下面 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...