藍橋杯 九宮重排 典型bfs

2022-06-09 18:36:07 字數 949 閱讀 6164

如下面第乙個圖的九宮格中,放著 1~8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。

我們把第乙個圖的局面記為:12345678.

輸入輸入第一行包含九宮的初態,第二行包含九宮的終態。

輸出輸出最少的步數,如果不存在方案,則輸出-1。

樣例輸入

12345678. 

123.46758

樣例輸出

3
題目要求的是 求起始狀態轉移到最終狀態最少的步數,並且涉及迷宮問題。這類求迷宮最優解,我第一反應就是廣搜,廢話不多說,上code。

//單向bfs**

​#include

using namespace std;

#include

#include

#include

struct node

;string last;//終點狀態

queuep;

setvis;//判重

int dx[4] = ;//四個方向拓展

int dy[4] = ;

​void bfs()

//找到 head.origin中'.'的位置

int pos;

for(int i=0;i

} int x = pos/3;

int y = pos%3;//將string物件origin模擬地轉化為3*3的字元陣列,方便判斷是否出界

for(int i=0;i<4;i++)//四個方向拓展} }

}cout<

​int main()

執行結果截

題記 BFS 九宮重排 藍橋杯

如下面第乙個圖的九宮格中,放著 1 8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。我們把第乙個圖的局面記為 12345678.把第二個圖的局面記為 123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。...

藍橋杯 九宮重排

九宮重排 如下面第乙個圖的九宮格中,放著 1 8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。我們把第乙個圖的局面記為 12345678.把第二個圖的局面記為 123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格...

bfs 藍橋杯 歷屆試題 九宮重排

如下面第乙個圖的九宮格中,放著 1 8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。我們把第乙個圖的局面記為 12345678.把第二個圖的局面記為 123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。...