洛谷 P1379 八數碼難題

2022-03-20 02:34:32 字數 970 閱讀 7282

洛谷傳送門

jdoj傳送門

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

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

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

雙向bfs+map去重。

這裡採用了把序列化成矩陣的模式,方便繼續往下搜。

**:

#include#include#include#include#include#define ll long long int

using namespace std;

int n,g=123804765;

int a[4][4],fx,fy,nx,ny;

int dx[4]=;

int dy[4]=;

queueq;

mapv,ans;

int main()

q.push(n);

q.push(g);

ans[n]=0;

ans[g]=1;

v[g]=2;

v[n]=1;

while(!q.empty())

for(int i=0;i<4;i++)

if(v[now]+v[cur]==3)

ans[now]=ans[cur]+1;

v[now]=v[cur];

q.push(now);

swap(a[fx][fy],a[nx][ny]);} }

}

洛谷 P1379 八數碼難題

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

洛谷 P1379 八數碼難題

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

洛谷P1379 八數碼難題

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