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
相关推荐
Mephisto.java18 分钟前
【力扣 | SQL题 | 每日四题】力扣2082, 2084, 2072, 2112, 180robin_suli19 分钟前
滑动窗口->dd爱框框丶Darling.21 分钟前
LeetCode Hot100 | Day1 | 二叉树:二叉树的直径labuladuo52031 分钟前
Codeforces Round 977 (Div. 2) C2 Adjust The Presentation (Hard Version)(思维,set)jiyisuifeng199142 分钟前
代码随想录训练营第54天|单调栈+双指针꧁༺❀氯ྀൢ躅ྀൢ❀༻꧂1 小时前
实验4 循环结构新晓·故知1 小时前
<基于递归实现线索二叉树的构造及遍历算法探讨>总裁余(余登武)1 小时前
算法竞赛(Python)-万变中的不变“随机算法”Eric.Lee20212 小时前
音频文件重采样 - python 实现huapiaoy2 小时前
Redis中数据类型的使用(hash和list)