时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小红最近爱上了扫雷游戏。
所谓扫雷游戏的规则是这样:给定一个n*m的矩阵,每个位置有可能是地雷。如果点击了一个地雷,那么直接被炸死,游戏结束。如果点击的一个位置不是地雷,那么将显示该格子周围 8 个格子中地雷数量的总和。
“周围 8 个格子”的定义:对于一个点
)
,其周围 8 个格子的坐标为
)
,其中

。
现在小红拿到了一个 4*4 的矩阵,其中有一些位置已经被翻开。小红想知道,根据现有的信息,有哪些位置一定是雷,有哪些位置一定不是雷?小红希望你能把地图标记上。
输入描述:
输入4行,每行是一个长度为 4 的字符串。
其中字符 '.' 代表该位置的情况未知。
字符是数字代表该位置不是雷,且表示周围点的雷数量。
保证给定的地图一定合法。
输出描述:
对于一个确定的格子,如果是雷则标记为 'X',不是雷则标记为 'O'。
不确定的格子保留字符 '.',已经确定的数字也按数字输出。
示例1
说明
判断依据如下:
根据(0,1)坐标的1,得知它周围4个只有一个雷。然后结合(0,2)坐标的2,得知(1,3)坐标一定是雷。
同理可得出(1,1)坐标一定是雷。根据两个已知的雷就可以判断出前两行其他均不是雷。
示例2
说明
判断依据如下:
由于(1,2)坐标是8,那么该点周围有8个雷,且一共只有8个节点。所以这8个节点一定全部都是雷。