cpp#include<iostream> #include<cstring> #include<algorithm> #include<queue> #include<unordered_map> using namespace std; int dx[4] = { 1,-1,0,0 }; int dy[4] = { 0,0,-1,1 }; int bfs(string state) { queue<string>q; unordered_map<string, int>d; q.push(state); d[state] = 0; while (q.size()) { auto t = q.front(); int dis = d[t]; int k = t.find('x'); int x = k / 3, y = k % 3; q.pop(); string end = "12345678x"; if (t == end)return d[t]; for (int i = 0; i < 4; i++) { int a = x + dx[i], b = y + dy[i]; if (a >= 0 && a < 3 && b >= 0 && b < 3) { swap(t[a * 3 + b], t[k]); if (!d.count(t)) { d[t] = dis + 1; q.push(t); } swap(t[a * 3 + b], t[k]); } } } return -1; } int main() { string state; for (int i = 0; i < 9; i++) { char s; cin >> s; state += s; } cout << bfs(state); return 0; }
算法.bfs八数码
丰海洋2024-02-11 19:26
相关推荐
St_Ludwig11 分钟前
蓝桥杯疑似例题解答方案(打印任意阶杨辉三角)心.c44 分钟前
0-1背包问题kitesxian1 小时前
Leetcode146. LRU 缓存(HOT100)BigCowPeking1 小时前
leetcode 排序算法汇总eternal__day1 小时前
优选算法(双指针)武昌库里写JAVA1 小时前
SpringBoot+SpringCloud面试题整理附答案手握风云-1 小时前
数据结构(Java版)第五期:ArrayList与顺序表(下)不去幼儿园1 小时前
【RL Base】多级反馈队列(MFQ)算法是糖不是唐1 小时前
代码随想录算法训练营第五十四天|Day54 图论Shiroha Wang2 小时前
【数据结构OJ】【图论】货币套汇(图路径)