Luogu 1379 八數碼難題

2022-06-13 04:51:09 字數 1162 閱讀 3868

吐槽:此題就是一點一點卡過去的

警告:

1、千萬不能用dfs搜這種東西(dfs需要遍歷所有狀態才能找到最優解), 分分鐘**

2、寫結構體的時候要綜合判斷&的加和不加

code:

//

luogu-judger-enable-o2

#include #include

#include

using

namespace

std;

typedef

long

long

ll;const

int n = 5

;const

int m = 1e6 + 5

;const

int dx = ;

const

int dy = ;

struct

node

return

res;

} /*

inline void print()

*/}f[m], tar;

map

int>vis;

inline

bool chk(const node &now)

inline

bool vivid(int x, int

y) inline

void swap(int &x, int &y)

/*void dfs(int x, int y, int stp)

ll h = in.has();

if(vis.count(h)) return;

vis[h] = 1;

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

}vis[h] = 0;

} */

intbfs() }}

}}inline

void

init()

intmain()

f[1].stp = 0;//

printf("%lld\n", f[1].has());

init();

//dfs(sx, sy, 1);

printf("

%d\n

", bfs());

return0;

}

Luogu1379 八數碼難題

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

八數碼難題(luogu 1379)

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

C P1379 八數碼難題

題目 p1379 八數碼難題 經典演算法教材題目,然後我決定用 hash bfs 搞一下,解釋 附上 include include using namespace std string strat,end 123804765 que 1000000 strat輸入和取佇列頭,end終點,que佇列...