藍橋杯2016初賽 卡片換位

2021-10-07 06:59:43 字數 1179 閱讀 3005

你玩過華容道的遊戲嗎?這是個類似的,但更簡單的遊戲。看下面 3 x 2 的格仔

±–±--±–+

| a | * | * |

±–±--±–+

| b | | * |

±–±--±–+

在其中放5張牌,其中a代表關羽,b代表張飛,* 代表士兵。還有乙個格仔是空著的。

你可以把一張牌移動到相鄰的空格中去(對角不算相鄰)。

遊戲的目標是:關羽和張飛交換位置,其它的牌隨便在**都可以。

輸入輸入存在多組測試資料,對於每組測試資料:

輸入兩行6個字元表示當前的局面

輸出對於每組測試資料輸出乙個整數表示答案:

樣例輸入

*a**b

a b樣例輸出

1312

沒什麼好說的 見最小和最短知bfs,額bfs是佇列(fifo表)dfs是棧(lifo)(其實我是不懂什麼意思)

題解:1、因為棋盤只有兩行,可以把他處理成一行處理(bfs的時候方便標記這個棋盤狀態),注意隔離邊界(用#將第一行和第二行隔離)

2、用set集合記錄走過的每乙個狀態,標記走過的棋盤狀態

3、從空格位置開始搜尋,目標狀態是棋盤中a、b位置互換

#include

#include

#include

#include

using

namespace std;

//queue 和set 都是c++ stl標準模板庫里的模板。看來學會這個很有用的!

#include

#include

#include

#include

using

namespace std;

int dir[4]

=;//左右下上

struct node

a,b,k;

void

bfs()if

(se.

count

(ss)==0

)//避免往回走,標記棋盤狀態}}

藍橋杯2016初賽 卡片換位 BFS

題目描述 你玩過華容道的遊戲嗎?這是個類似的,但更簡單的遊戲。看下面 3 x 2 的格仔 a b 在其中放5張牌,其中a代表關羽,b代表張飛,代表士兵。還有乙個格仔是空著的。你可以把一張牌移動到相鄰的空格中去 對角不算相鄰 遊戲的目標是 關羽和張飛交換位置,其它的牌隨便在 都可以。輸入 輸入存在多組...

藍橋杯 2016CC 卡片換位

卡片換位 你玩過華容道的遊戲嗎?這是個類似的,但更簡單的遊戲。看下面 3 x 2 的格仔 在其中放5張牌,其中a代表關羽,b代表張飛,代表士兵。還有乙個格仔是空著的。你可以把一張牌移動到相鄰的空格中去 對角不算相鄰 遊戲的目標是 關羽和張飛交換位置,其它的牌隨便在 都可以。輸入格式 輸入兩行6個字元...

密碼脫落,藍橋杯,2016初賽

題目描述 x星球的考古學家發現了一批古代留下來的密碼。這些密碼是由a b c d 四種植物的種子串成的序列。仔細分析發現,這些密碼串當初應該是前後對稱的 也就是我們說的映象串 由於年代久遠,其中許多種子脫落了,因而可能會失去映象的特徵。你的任務是 給定乙個現在看到的密碼串,計算一下從當初的狀態,它要...