本题是经典的扫雷游戏模拟题,核心在于对每个非雷格(?)统计其周围 8 个方向的地雷(*)数量。
我的解法严格遵循题目要求:
1. 输入处理:首先读入雷区的行数 n 和列数 m,然后逐行读取地图字符串,存储为列表 rows。
2. 逐格判断:遍历每个位置 (y, x):
* 若当前格为地雷(*),直接在结果中保留 *;
* 若为安全格(?),则进入统计流程。
3. 邻域构建:动态计算上下左右四个方向的有效坐标(通过边界检查 >=0 和 < 行/列数),分别存入 directions_ud(上下行)和 directions_lr(左右列)。
4. 八方扫描:将当前行列加入邻域列表,形成最多 3×3 的局部区域,遍历其中每个格子,遇到 * 则计数加一。
5. 类型转换:关键细节——必须将计数值 count 转为字符串再存入结果,否则后续 ''.join() 会因类型错误而崩溃!
虽然未使用方向数组等简洁写法,但逻辑清晰、边界处理稳妥,能正确应对各种角落与边缘情况。一行不偷懒,八方皆扫清,这才是扫雷的正确打开方式!