首页 > TAG信息列表 > P1379

洛谷 P1379 八数码难题

Description 洛谷传送门 Solution 似乎各种做法都可以过,我写的 \(IDA^*\)。 很明显,乐观估价函数即为当前棋盘与目标棋盘上不同的数字个数。 所以直接枚举深搜层数,然后搜索即可。 \(IDA^*\) 的主要难度就在乐观估价函数上,这个弄明白之后,就很简单了。 然后这个写法上面还有一点问题,

P1379 八数码难题(双端队列)

P1379八数码难题 双端队列 用单队列实现双端队列时需要注意标记数组是不一样的。我们让我们想要的第一个队列用\(1\)来标记,第二个用\(2\)来标记,那么当他们碰面的时候也就是\(1+2=3\)的时候就是我们想要的答案。 双端队列开数组来记录权值。 标记要标记传标记\(vis[now] = vis[

P1379 八数码难题 题解(双向宽搜)

CSDN同步 原题链接 简要题意: 给定一个 \(3 \times 3\) 的矩阵,每次可以把空格旁边(四方向)的一个位置移到空格上。求到目标状态的最小步数。 前置知识: 单向宽搜的写法 \(\text{OK}\),现在我们来考虑双向宽搜。 假设 \(A\) 和 \(B\) 两个人被困在了迷宫的两个角落,现在他们首先要互相找

P1379 八数码难题 题解

博客园同步 原题链接 简要题意: 给定一个 3×33 \times 33×3 的矩阵,每次可以把空格旁边(四方向)的一个位置移到空格上。求到目标状态的最小步数。 前置知识: 深度优先搜索(dfs\texttt{dfs}dfs). 将这题作为 宽度优先搜索(bfs\texttt{bfs}bfs) 的模板题讲解! 首先,众所周知 dfs\tex

洛谷P1379 八数码难题

https://www.luogu.org/problem/P1379 这个代码需要用c++11提交。 #include<bits/stdc++.h>#include<unordered_map>using namespace std;string st;int dx[]={0,0,1,-1},dy[]={1,-1,0,0};int bfs(){ string ed="123804765"; queue<string> q; un