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
相关推荐
顶呱呱程序6 分钟前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能爱吃生蚝的于勒28 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!羊小猪~~32 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看王哈哈^_^1 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!星沁城1 小时前
240. 搜索二维矩阵 II脉牛杂德1 小时前
多项式加法——C语言legend_jz1 小时前
STL--哈希kingmax542120081 小时前
初三数学,最优解问题一直学习永不止步2 小时前
LeetCode题练习与总结:赎金信--383小刘|2 小时前
《Java 实现希尔排序:原理剖析与代码详解》