题目
题目链接
题解BFS(+STL)
最少次数,每次跳跃对次数的贡献都是1,完全可以抽象理解为最短路,所以采用BFS可以直接算出最短长度。
状态转移存在四种,以题中给的状态为例,可以选择2跳到空处、1跳到空处、7跳到空处或8跳到空处。标记一下遇到过的状态,不要再加入队列中了。
代码#include
#define PIV pair
using namespace std;
int ans = 0;
vector target = {0, 8, 7, 6, 5, 4, 3, 2, 1}; // 目标状态
map st; // 标记
vector exchage (vector v, int x, int y) {
swap (v[x], v[y]);
return v;
}
void bfs () {
queue q; // I表示0的位置,V表示状态
vector s;
s = {0, 1, 2, 3, 4, 5, 6, 7, 8};
q.push ({0, s});
st[s] = 1;
while (q.size()) {
int k = q.size ();
ans ++;
for (int i = 0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?