HDU1885 Key Task 【翻译】

Key Task

【题目描述】

捷克理工大学相当老了—-你已经知道它在2007年庆祝了它的诞生300周年。在这种古老的建筑中导航有时会有点棘手,因为这些奇奇怪怪又长的走廊在你绝对想不到的地方叉进来或加进来。

这导致的结果是一些新生总会有困难从正确的路去到他们的教室。因此,学生会研制了一个电脑游戏来帮助同学训练寻找方向的技能。这个游戏的目标是找到走出迷宫的路。你的任务是写一个验证软件来解决这个游戏。

迷宫是一个二维格子方格,每个方块要么是空的,要么是充满了一堵墙。一些可走的正方形可能包含门或钥匙。这里有四种不同类型的钥匙和门:蓝色、黄色、红色和绿色。每种钥匙只能打开同一颜色的门。你可以在垂直或水平的相邻可走的方块之间移动,不允许在对角线移动。你不能穿过墙壁,且不能离开迷宫。如果一个格子有一个门,只有当你已经在一个适当的钥匙上一个正方形时你才可以去那里。

【输入】

输入包含多组数据。每个数据第一行有两个整数 R 和 C(1≤R,C≤100)表示一个地图的尺寸,接下来是这个地图,包含R行每行C个字符。每个字符含义如下:

#
. 空的
* 你的位置
B Y R G 蓝/黄/红/绿 的 门
b y r g 蓝/黄/红/绿 的 钥匙
X 出口

以下情况是被允许的:

1、有不止一个出口

2、没有出口

3、有多个同样颜色的门或者有多个同颜色的钥匙

4、没有相应钥匙的门,或者没有相应门的钥匙

你可以认为你的位置(*)的标记在每一个地图上都会出现一次。

每个数据之后有一条空行。

当输入的R和C为0时停止输入。

【输出】

对于每个数据,打印一行“Escape possible in S steps.”(S是最少步数)。如果没有出口,就输出一行“The poor student is trapped!”。

【样例输入】

1 10
*........X

1 3
*#X

3 20
####################
#XY.gBr.*.Rb.G.GG.y#
####################

0 0

【样例输出】

Escape possible in 9 steps.
The poor student is trapped!
Escape possible in 45 steps.

猜你喜欢

转载自blog.csdn.net/jiangbojun2017/article/details/80918858