吐槽:此題就是一點一點卡過去的
警告:
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佇列...