欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S41001.10-1 翻滚积木
10-1 翻滚积木
翻滚积木
核心缓存区的第一层,是一片由光构成的迷宫。地面是整齐的方格,墙壁由半透明的数据流砌成。迷宫中央横卧着一个巨大的长方体积木——不是玩具,是Zero最早的感知训练器。
"它曾经用这个学习空间。"Echo说,投影绕着积木转了一圈,"把它翻进角落的坑里,门就会打开。"
"咋个翻?"CC问。
"积木可以朝四个方向翻滚。"你蹲下来,用手指在地面比划,"站着的时候占一格,倒了就占两格。如果翻滚时撞到墙或者悬空,就翻不过去。"
CC试着推了推积木——纹丝不动。
"不是推,是让它自己滚。"你说,"选一个方向,让它倒下去。倒下的过程中不能有任何一格是墙或者悬空。"
"这就像……"CC想了想,"像推一个醉汉走路。每步都要算好会不会摔。"
"对。"
你开始写。把积木的状态记下来——站在哪一格、朝哪个方向倒着。每一步尝试四个方向翻滚,检查翻滚过程中经过的格子是否都合法。找到翻滚到目标坑里的最少步数。
屏幕上的数字一跳一跳。十七步。
"十七步。"你说,"最短路径。"
"你咋个晓得是最短?"CC问。
"因为每一步代价一样。"你说,"先到达的步数一定最少。"
积木在屏幕上滚了十七次,最后"咚"的一声掉进坑里。地面裂开一道缝隙,露出通往第二层的阶梯。
"走。"Echo说。
题目描述
的网格迷宫。一个 的长方体积木初始直立在某格。积木可以向东、南、西、北四个方向翻滚。直立时占 格子,倒下时占 或 格子。翻滚过程中经过的所有格子必须都是空地,且不能超出边界。目标是把积木翻进指定的"洞"格子(洞只能由直立状态进入)。求最少翻滚次数。
输入格式
多组数据。每组数据先输入 。然后 行字符串,描述网格:. 空地,# 墙,X 洞,B 积木初始位置(也是空地)。
输出格式
每组数据输出最少翻滚次数。无法到达输出 impossible。
输入样例
3 3
...
.#.
...
输出样例
Impossible
提示
- BFS 状态为 , 表示积木姿态(直立 / 东西倒 / 南北倒)。
- 每次转移需检查翻滚路径上所有格子是否合法。
- 目标状态为积木直立且位于
X。
第二层是一片废弃的仓库。生锈的货架之间散落着无数货箱,有些挡在路中央。远处有一扇发光的门——但门前面有一个凹槽,大小刚好能嵌进一个货箱。
"要把货箱推到那个位置。"Echo说,"Zero用这个游戏训练工人的服从性。"
"矿区也干过这种活。"CC说,语气里带着一丝烦躁,"推石头,搬箱子,听命令。"
"但这次。"你说,"推箱子的是你,听命令的是你自己。"
CC没说话,但已经走到一个货箱前,双手按了上去。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |