八數碼難題

2022-05-01 06:06:06 字數 925 閱讀 9328

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

輸入格式:

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

輸出格式:

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

輸入樣例#1:

283104765

輸出樣例#1:

4

**實現:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6 map v;

7 map step;

8int a,b,t,head=0,tail=0;9

int bh=,wz[100000],tou[100000

];10

string s,rs("

123804765

"),dl[100000

],ns;

11int

main()

31if(i==1&&a!=0&&a!=3&&a!=6)34

if(i==2&&a!=2&&a!=5&&a!=8)37

if(i==3&&a<6)40

if(v[ns]!=t)

45else 46}

47}48}

49return0;

50 }

很久之前的**了,我其實也不知道現在能不能打出來。(現在敲應該也就30+吧,這是病。)

八數碼難題

今天做了一道八數碼,完全沒有bfs的思路,還是請大佬點通了以下,才知道這跟bfs沒有什麼區別 之所以要把難題劃掉,是因為發現這根本是一道水題,對,沒錯,沒有你想的那麼難 首先給你的乙個數,就是八數碼的排列,也就是 0 sim8 的全排列,然後你需要搜尋他怎樣移動。然後我們需要判重了,判重的方法有很多...

八數碼難題

yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布局 初始狀態 和目標布局 為了使題...

1225 八數碼難題

時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解檢視執行結果 description yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留...