九宮重排:
如下面第乙個圖的九宮格中,放著 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 顯然是按從上到下,從左到右的順序記錄數字,空格...