3. 扫雷
成绩 | 10 | 开启时间 | 2016年08月30日 星期二 09:00 |
折扣 | 0.8 | 折扣时间 | 2016年09月3日 星期六 23:00 |
允许迟交 | 否 | 关闭时间 | 2016年10月10日 星期一 23:55 |
背景
你玩儿过扫雷游戏吧?有个操作系统中带了这个小游戏,那个系统叫什么来着?;-)在游戏中要想过关,就必须要在一个 NxM 的区域上找出所有的地雷。游戏过程中,计算机会在地图上显示一些数字从而帮助你确定哪里有地雷。例如,在下面这个有两颗地雷的 4x4 的地图(*表示地雷):
*... .... .*.. ....
根据上面的地图,可以计算出应该提供给游戏者的数字如下所示:
*100 2210 1*10 1110
每个数字表示了该方格周围到底有几个地雷,当然,一个方格周围最多的时候只会有八个。
输入
输入中将包括一系列的地图,每个地图的第一行有两个整数 n 和 m(0 <n,m <= 100),它们表示了地图的行数和列数。下面的 n 行每行都有 m 个字符,其中 "." 表示安全而 "*" 表示地雷。如果地图的 n 和 m 都为 0,则表示输入结束。
输出
针对每一个地图,首先输出一行:
Field #x:
其中 x 是当前地图的编号(从 1 开始)。下面的 n 行则将地图中的 "." 以数字表示,该数字表示该方格周围有多少颗地雷。
来源
http://acm.uva.es/problemset/v101/10189.html
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 1024KB | 0 |
这道题也算是程设的老题了,每年都有~题设很易理解就是我们平时经常玩的扫雷游戏。需要注意的是输入处理和遍历时的边界坐标问题。每次遇到“*”则可以直接输出,其他位置需要判断其八零域的“*”数量后输出。
结果:
写到这里突然觉得这么直接贴出代码是不是不太好,在纠结要不要去掉几行(坏笑),希望所有参考的同学只是借鉴思路,可以自己独立写一遍。