藍橋杯 九宮重排

2021-10-03 06:37:38 字數 943 閱讀 1929

九宮重排:

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

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

把第二個圖的局面記為:123.46758

顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。

本題目的任務是已知九宮的初態和終態,求最少經過多少步的移動可以到達。如果無論多少步都無法到達,則輸出-1

輸入格式:

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

輸出格式:

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

輸入:

12345678.

123.46758

輸出:

3解題思路:可以使用bfs,由於時間限制,需要使用雙向bfs,對初態和終態進行bfs,當兩邊狀態變化到一種形態時,表示可以達到。即maps值為1,是由初態變化而來,為2的話,是由終態變化而來。當maps值相加為3的時候,則證明初態和終態都能達到此狀態。

#include#include#include#includeusing namespace std;

int ne[4][2] = ;

mapmaps;

maptemp;

string a, b;

/* 雙向bfs

*/int bfs()

}} t = x*3+y;

for(int i = 0; i<4; i++)

else if(maps[tail] + maps[head] == 3)

}} }

return -1;

}int main()

C 藍橋杯 九宮重排

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

藍橋杯 歷屆試題 九宮重排

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

藍橋杯 歷屆試題 九宮重排

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