QOJ.ac

QOJ

حد الوقت: 30.0 s حد الذاكرة: 256 MB مجموع النقاط: 100

#17336. 滑块谜题

الإحصائيات

在滑块拼图中,我们通过不断将滑块(方块)移动到框架内的空位中,以达到目标放置状态。

一位谜题设计者结合了滑块拼图和迷宫的想法,设计了一种新的谜题。该谜题在一个被分割为单位正方形的矩形框架中进行。一些方格预先被障碍物占据。框架中放置了若干个滑块:一个 $2 \times 2$ 的“王”(king)滑块和若干个 $1 \times 1$ 的“兵”(pawn)滑块。恰好留有两个 $1 \times 1$ 的空位。如果一个“兵”滑块与一个空位相邻,我们可以将该滑块滑动到该空位。如果“王”滑块的一整条边与两个空位相邻,我们可以滑动“王”滑块。我们不能移动障碍物。从给定的初始放置状态开始,谜题的目标是将“王”滑块移动到框架的左上角。

下图展示了样例输入中第四个数据集的初始放置状态。

图 E.1:样例输入中的第四个数据集。

你的任务是编写一个程序,计算从给定的滑块放置状态解决该谜题所需的最少移动步数。这里,一步移动是指将“王”或“兵”滑块滑动到相邻的位置。

输入格式

输入包含多个数据集。每个数据集的第一行包含两个由空格隔开的整数 $H$ 和 $W$,其中 $H$ 和 $W$ 分别是框架的高度和宽度。

接下来的 $H$ 行,每行包含 $W$ 个字符,表示滑块的初始放置状态。在这 $H$ 行中,Xo*. 分别表示“王”滑块的一部分、“兵”滑块、障碍物和空位。这 $H$ 行中不包含其他字符。

你可以假设 $3 \le H \le 50$ 且 $3 \le W \le 50$。

包含两个由空格隔开的零的一行表示输入结束。

输出格式

对于每个数据集,输出一行,包含将“王”滑块移动到左上角所需的最少移动步数。如果无法做到,则输出 -1

样例

输入样例 1

3 3
oo.
oXX
.XX
3 3
XXo
XX.
o.o
3 5
.o*XX
oooXX
oooo.
7 12
oooooooooooo
ooooo*****oo
oooooo****oo
o**ooo***ooo
o***ooooo..o
o**ooooooXXo
ooooo****XXo
5 30
oooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooo
o***************************oo
XX.ooooooooooooooooooooooooooo
XX.ooooooooooooooooooooooooooo
0 0

输出样例 1

11
0
-1
382
6807

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.