当前位置: 首页 > news >正文

题解:洛谷 P1379 八数码难题

【题目来源】

洛谷:P1379 八数码难题 - 洛谷

【题目描述】

\(3\times 3\) 的棋盘上,摆有八个棋子,每个棋子上标有 \(1\)\(8\) 的某一数字。棋盘中留有一个空格,空格用 \(0\) 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为 \(123804765\)),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。

【输入】

输入初始状态,一行九个数字,空格用 \(0\) 表示。

【输出】

只有一行,该行只有一个数字,表示从初始状态到目标状态需要的最少移动次数。保证测试数据中无特殊无法到达目标状态数据。

【输入样例】

283104765

【输出样例】

4

【算法标签】

《洛谷 P1379 八数码难题》 #搜索# #枚举# #哈希,hash# #A*算法# #福建省历届夏令营#

【代码详解】

#include <bits/stdc++.h>
using namespace std;// 使用unordered_map来存储状态到步数的映射
unordered_map<string, int> d;  // 存储每个状态对应的步数
queue<string> q;               // BFS队列
string s;                      // 初始状态字符串
int ans;                       // 结果(最少步数)// 方向数组:上、右、下、左
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};// 广度优先搜索函数
int bfs(string str)
{// 初始状态入队q.push(str);// 目标状态string end = "123804765";  // 目标状态:1 2 3//          8 0 4//          7 6 5// BFS主循环while (q.size()) {auto s = q.front();  // 获取队首状态q.pop();// 如果到达目标状态,返回步数if (s == end) return d[s];  // 到达目标// 找到'0'(空格)的位置int k = s.find('0');// 将一维索引转换为二维坐标int x = k / 3, y = k % 3;// 尝试四个方向的移动for (int i = 0; i < 4; i++) {int xx = x + dx[i];  // 新位置的x坐标int yy = y + dy[i];  // 新位置的y坐标// 检查新位置是否在3x3网格内if (xx < 0 || xx >= 3 || yy < 0 || yy >= 3) continue;int dis = d[s];  // 记录当前状态的步数// 交换'0'和相邻位置的数字swap(s[k], s[xx * 3 + yy]);  // 生成新状态// 如果新状态未被访问过if (!d.count(s)) {d[s] = dis + 1;  // 记录步数q.push(s);       // 新状态入队}// 还原状态,以便尝试下一个方向swap(s[xx * 3 + yy], s[k]);  // 还原}}return -1;  // 如果无法到达目标,返回-1
}int main()
{// 输入初始状态cin >> s;// 初始状态步数为0d[s] = 0;// 执行BFS搜索ans = bfs(s);// 输出结果cout << ans;return 0;
}

【运行结果】

283104765
4
http://www.jsqmd.com/news/394406/

相关文章:

  • 题解:洛谷 P1120 [CERC 1995] 小木棍
  • 2026年滤芯专业厂家推荐:河南纵达过滤设备,天然气/氢气/聚结滤芯等全系产品供应 - 品牌推荐官
  • 吐血推荐!继续教育必备AI论文工具 —— 千笔写作工具
  • 2026年比较好的山东橡胶靠球厂家选型推荐指南 - 品牌鉴赏师
  • 2026年天然植物提取物厂家推荐:涟源康麓生物科技,新橙皮苷/橙皮苷95%等全系产品供应 - 品牌推荐官
  • 2026年食用油/液压油/机油/亚麻油灌装机推荐:青州市同兴源包装机械有限公司全品类覆盖 - 品牌推荐官
  • 2026订制彩盒厂家实力推荐:昆山和特富包装材料有限公司,化妆品/食品/文具/日化彩盒全品类供应 - 品牌推荐官
  • 2026年评价高的火山石填料,人工湿地滤料火山石厂家行业精选名录 - 品牌鉴赏师
  • 2026年工业用/滤布/化工/酒店台布/商用洗衣机推荐:泰州市海豚洗涤设备全系解决方案 - 品牌推荐官
  • 2026动力母线槽/动力母线厂家推荐:腾霖电气有限公司,铝基/铜动力母线全系供应 - 品牌推荐官
  • 2026年岗亭屋厂家实力推荐:青州喜邦工贸治安/收费/门卫/成品/值班岗亭屋全系解决方案 - 品牌推荐官
  • 2026年热门的双U型丝杆升降机厂家品牌推荐名录 - 品牌鉴赏师
  • 2026年市政水泥涵管/钢筋水泥盖板/定制水泥制品厂家推荐:安徽亦然建材全系供应 - 品牌推荐官
  • 2026年铝翅片生产厂家实力推荐:镇江银海铝业,铝箔/钢管/航空/折弯铝翅片全系供应 - 品牌推荐官
  • 2026年合成/320/食品级/高温/350/300导热油及检测清洗剂推荐:濮阳市永龙化工 - 品牌推荐官
  • 2026年工业除尘器厂家推荐:廊坊友诚过滤设备有限公司,布袋/脉冲/不锈钢除尘器全系供应 - 品牌推荐官
  • 2026高考志愿填报全攻略:北京金如愿教育科技,低分策略/位次定位/智能填报指南一站式服务 - 品牌推荐官
  • 2026年起重电磁铁专业厂家推荐:山东鲁磁工业科技,全系产品适配多场景吊运需求 - 品牌推荐官
  • 2026年改性尼龙PA66厂家推荐:江苏腾越新材料科技,抗静电/耐磨/阻燃等全系高性能产品 - 品牌推荐官
  • 2026陶瓷膜设备厂家实力推荐:南京艾宇琦膜科技,旋转/碟片/过滤陶瓷膜全系供应 - 品牌推荐官
  • 2026北京汽车租赁服务推荐:永东鑫晨汽车服务,多元业务适配多场景用车需求 - 品牌推荐官
  • 话费卡的回收方式对比,哪种流程最适合你? - 团团收购物卡回收
  • 2026年特种防护服厂家推荐:河北冀龙凤劳保服装,防酸/阻燃/防辐射/防静电全系供应 - 品牌推荐官
  • 2026年优秀的核级高纯硼酸厂家选型推荐榜单 - 品牌鉴赏师
  • 2026年石材切割机厂家推荐:郑州铭泽机械,高速石墨/箱板/电熔砖切割机全系解决方案 - 品牌推荐官
  • 题解:洛谷 P1470 [IOI 1996 / USACO2.3] 最长前缀 Longest Prefix
  • 如何选择最优的杉德斯玛特卡回收平台?详解回收流程 - 团团收购物卡回收
  • 2026年知名的山东报关公司推荐榜单 - 品牌鉴赏师
  • 2026年微波加热设备厂家推荐:上海楚尚机械有限公司,微波烘干/干燥/加热机全系供应 - 品牌推荐官
  • 2026年喷码机厂家实力推荐:易玛伽智能,小字符/激光/uv喷码机全系供应 - 品牌推荐官