BFS解決九宮重排問題

2021-08-17 12:26:22 字數 1086 閱讀 4643

問題 1426: [藍橋杯][歷屆試題]九宮重排

時間限制: 1sec 記憶體限制: 128mb 提交: 215 解決: 47

題目描述

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

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

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

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

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

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

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

樣例輸入

12345678. 

123.46758

樣例輸出

3

實現**如下:

(我用了string來記錄已經出現過的排列情況,應該用其它方法儲存速度會更快)

實現**如下:

(我用了string來記錄已經出現過的排列情況,應該用其它方法儲存速度會更快)

#include

#include

#include

using namespace std;

int main()

;int pos=0;

string beg,des;

cin>>beg>>des;

if(beg==des)

s.insert(beg);int dalta[4]=;

arr[front]=beg;

while(front<=rear)

}c=beg[pos];beg[pos]=beg[p];beg[p]=c;

}front++;

}cout<

}

BFS解決九宮重排問題

問題 1426 藍橋杯 歷屆試題 九宮重排 時間限制 1sec 記憶體限制 128mb 提交 215 解決 47 題目描述 如下面第乙個圖的九宮格中,放著 1 8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。我們把第乙個圖的局...

BFS解決九宮重排問題

問題 1426 藍橋杯 歷屆試題 九宮重排 時間限制 1sec 記憶體限制 128mb 提交 215 解決 47 題目描述 如下面第乙個圖的九宮格中,放著 1 8 的數字卡片,還有乙個格仔空著。與空格子相鄰的格仔中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。我們把第乙個圖的局...

題記 BFS 九宮重排 藍橋杯

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