#P1858. Interesting Maze Game
Interesting Maze Game
本题没有可用的提交语言。
题目描述
警察局长最近购买了一款新游戏——著名的Ravensburger公司的"aMAZEing Labyrinth"。他现在非常热衷于这个游戏,任何空闲时间都在玩。然而在峰会期间,我们希望警察局长能做出更重要的决策,因此需要一个程序来替代他玩这个游戏。
游戏在一个的方格上进行,每个方格上放有一张卡片,卡片上绘制了不同的路径图案。这些路径可以连接方格的任意四条边,形成贯穿整个游戏场地的长路径。玩家可以沿着路径从一个方格移动到相邻的方格,前提是两个方格的路径图案在公共边上是连通的。不允许对角线移动。
在每一步操作开始时,玩家的游戏棋子位于某个方格上,目标是通过合法路径移动到另一个目标方格。在移动前,玩家可以通过插入一张额外的卡片来改变迷宫状态。
插入规则:
. 额外卡片只能插入到游戏场地的边缘位置(即偶数行或偶数列)。
. 插入会导致整行或整列的卡片向反方向移动一格,最边缘的卡片会被移出游戏场地(成为下一回合的额外卡片)。
. 只有偶数行和偶数列可以移动(即插入位置只能是$(1,2), (1,4), (1,6), (7,2), (7,4), (7,6), (2,1), (4,1), (6,1), (2,7), (4,7), (6,7)$)。
. 插入前,额外卡片可以旋转至任意四个方向。
棋子与目标的移动:
如果目标或棋子所在的卡片被移动,它们的位置也会相应调整。
如果目标卡片被移出游戏场地,则当前回合无法到达目标。
如果棋子所在的卡片被移出,棋子会重新出现在插入的卡片上。
任务:判断是否存在一种插入方式(包括旋转额外卡片),使得棋子能通过路径移动到目标位置。
输入格式
每个测试用例的第一行包含四个整数(),分别表示棋子的初始位置和目标位置。
接下来是行游戏场地的描述,每行由个子行组成(每张卡片用的字符矩阵表示)。
O
表示路径中心。
-
表示水平路径,|
表示垂直路径。
.
表示无路径。
最后行描述额外卡片。
输入以0 0 0 0
结束。
输出格式
如果存在一种插入方式使得棋子能到达目标,输出"You can win in one move."
。
否则输出"Bad luck!"
。
样例输入 1
1 1 7 7
... ... ... .|. ... ... ...
-O- -O- -O- .O. -O- -O- -O.
... ... ... .|. ... ... .|.
... ... ... ... ... ... .|.
.O- -O- -O- -O- -O- -O- -O.
.|. ... ... ... ... ... ...
.|. ... ... ... ... ... ...
.O- -O- -O- -O- -O- -O- -O.
... ... ... ... ... ... .|.
... ... ... ... ... ... .|.
.O- -O- -O- -O- -O- -O- -O.
.|. ... ... ... ... ... ...
.|. ... ... ... ... ... ...
.O- -O- -O- -O- -O- -O- -O.
... ... ... ... ... ... .|.
... ... ... ... ... ... .|.
.O- -O- -O- -O- -O- -O- -O.
.|. ... ... ... ... ... ...
.|. ... ... ... ... ... ...
.O- -O- -O- -O- -O- -O- -O.
... ... ... ... ... ... ...
.|.
.O.
.|.
样例输出 1
You can win in one move.
关键思路
. 模拟所有可能的插入操作(种位置 × 种旋转方向)。
. 调整棋子和目标的位置(如果它们所在的卡片被移动)。
. BFS/DFS检查路径连通性,判断棋子是否能到达目标。
来源
CTU Open 2002