Serein的扫雷游戏

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 2 总提交人数: 2

题目描述

$Serein$ 终于盼到了五一假期,他说让我们一起来玩扫雷游戏!

给定一个代表游戏面板的二维字符阵。 'M'代表一个未挖出的地雷,'E'代表一个未挖出的空方块,'B'代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字('1' '8' )表示有多少地雷与这块已挖出的方块相邻,'X'则表示一个已挖出的地雷。

现在给出表示初始游戏面板的二维字符阵和下一个点击位置(用行和列索引表示),根据以下规则,返回相应位置被点击后对应的游戏面板:

  • 如果一个地雷('M')被挖出,游戏就结束了——把它改为'X'
  • 如果一个没有相邻地雷的空方块('E')被挖出,修改它为('B'),并且所有和其相邻的方块都应该被递归地揭露;
  • 如果一个至少与一个地雷相邻的空方块('E')被挖出,修改它为数字('1''8'),表示相邻地雷的数量;
  • 如果在此次点击中,若无更多方块可被揭露,则返回游戏面板。

输入

第一行两个由空格分隔的非负整数 ,表示字符阵的行数 N 和列数 M

接下来 N 行字符串 ,表示二维字符阵。

最后一行两个由空格分隔的非负整数,表示下一个点击位置。(行与列的下标均从 0 开始)

数据范围:$2 \leq N,M \leq 250$

输出

输出N行,表示相应位置被点击后对应的面板。

输入样例1

4 5
EEEEE
EEMEE
EEEEE
EEEEE
3 0

输出样例1

B1E1B
B1M1B
B111B
BBBBB

输入样例2

4 5
B1E1B
B1M1B
B111B
BBBBB
1 2

输出样例2

B1E1B
B1X1B
B111B
BBBBB

样例解释

HINT

  • 点击的位置只能是未被挖出的方块 ('M'或者'E'),这也意味着面板至少包含一个可点击的方块。
  • 输入面板不会是游戏结束的状态(即有地雷已被挖出)。
  • 简单起见,未提及的规则在这个问题中可被忽略。例如,当游戏结束时你不需要挖出所有地雷。

AUTHOR: 胡湘鹏

相关推荐