簡單的八數碼問題(BFS)

2021-08-04 12:17:09 字數 1168 閱讀 4362

時間限制: 1 sec  

記憶體限制: 256 mb

提交: 9  

解決: 7 [

提交][

狀態][

討論版]

在3×3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是:給出一種初始布局(初始狀態)和目標布局(為了使題目簡單,設目標狀態為123804765),找到一種最少步驟的移動方法,實現從初始布局到目標布局的轉變。

輸入初試狀態,一行九個數字,空格用0表示

只有一行,該行只有乙個數字,表示從初始狀態到目標狀態需要的最少移動次數(測試資料中無特殊無法到達目標狀態資料)。

283104765
4

//

// main.cpp

// 問題 a: 八數碼

//// created by wenhan on 2017/7/28.

//#include #include #include #include #include #include #include int s=0;

struct meme;

int v[4][4]=,,,};

int t[4][4];

using namespace std;

bool panduan(struct me a)

void bfs()

mx[ss]=1;

for(int i=1;i<=3;i++)

for(int j=1;j<=3;j++)

if(x.c[i][j]==0)

//printf("%d\n",x.cur);

//接下來是4個方向,我人傻,大神請勿噴

if(x.x+1<=3)

if(x.x-1>=1)

if(x.y+1<=3)

if(x.y-1>=1)

}}int main()

me.cur=0;

s=0;

bfs();

printf("%d\n",me.cur);

// insert code here...

//std::cout << "hello, world!\n";

return 0;

}

雙向BFS 八數碼問題

問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布局 初始狀態 和目標布局 目標狀態 找到一種最少步驟的移動方法,實現從初始布局到目標布局的轉變。例如 2 8 3 1 6 4 7 ...

BFS入門 八數碼問題

題目描述 初始狀態的步數就算1,哈哈 輸入 第乙個33的矩陣是原始狀態,第二個33的矩陣是目標狀態。輸出 移動所用最少的步數 input 2 8 3 1 6 4 7 0 5 1 2 3 8 0 4 7 6 5 output 思路 這道題bfs搜尋的每一步就是讓矩陣從乙個狀態變為另乙個狀態。所以我們用...

八數碼問題 雙向bfs

如 注釋的很清楚了 單向的還可以看看這個 以下是參考上面連線的雙向 include include include include include using namespace std int dr 2 queue int q1,q2 map int,int c1 記錄是否走過這個狀態,避免重複,...