洛谷P1379 八數碼難題

2022-04-02 17:22:46 字數 1048 閱讀 2437

to 洛谷.1379 八數碼難題

題目描述

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

輸入格式:

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

輸出格式:

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

輸入樣例#1:

283104765

輸出樣例#1:

4
典型的廣搜,不過難點在於判斷當前的狀態。用了乙個九位數來記錄狀態。
1 #include2 #include3 #include

4using

namespace

std;

5const

int ans=123804765;6

const

int to[5]=;

7set

s;8struct

state

9cur,nxt;

13 state que[1000010

];14

intcalu(state x)

1522

void

bfs(state now)

2349

if(s.find(tmp)==s.end())

50 que[tail++]=now,s.insert(tmp);51}

52}53}

54int

main()

5563

for(int i=2;i>=0;i--)

64for(int j=2;j>=0;j--)

6571 cur.step=0;72

bfs(cur);

73return0;

74 }

洛谷 P1379 八數碼難題

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

洛谷 P1379 八數碼難題

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

洛谷 P1379 八數碼難題

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