Python破解NOIP2015基础扫雷游戏:计算非地雷格周围地雷数
以下是使用Python语言解决扫雷游戏问题的代码: ```python # 读取输入的行数和列数 n, m = map(int, input().split()) # 初始化雷区 minefield = [] for _ in range(n): row = input() minefield.append(row) # 定义八个方向的偏移量 directions = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] # 遍历雷区的每个格子 for i in range(n): for j in range(m): if minefield[i][j] == '*': # 如果是地雷格,直接输出 '*' print('*', end='') else: # 计算非地雷格周围的地雷数量 mine_count = 0 for dx, dy in directions: ni, nj = i + dx, j + dy # 检查相邻格子是否在雷区内且为地雷格 if 0 <= ni < n and 0 <= nj < m and minefield[ni][nj] == '*': mine_count += 1 # 输出非地雷格周围的地雷数量 print(mine_count, end='') # 换行 print() ``` 代码解释: 1. 读取输入:首先读取雷区的行数 `n` 和列数 `m`,然后逐行读取雷区的布局并存储在 `minefield` 列表中。 2. 定义方向偏移量:定义了八个方向的偏移量,用于检查每个格子的周围格子。 3. 遍历雷区:使用双重循环遍历雷区的每个格子。 4. 处理地雷格:如果当前格子是地雷格,直接输出 `*`。 5. 处理非地雷格:对于非地雷格,遍历其八个相邻格子,统计其中地雷格的数量,并输出该数量。 6. 换行:每一行处理完后,换行输出下一行。 复杂度分析: - 时间复杂度:$O(n * m)$,其中 $n$ 是雷区的行数,$m$ 是雷区的列数。 - 空间复杂度:$O(n * m)$,主要用于存储雷区的布局。 ######[AI问答 | 545点数解答 | 2026-02-02 17:34:02]
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)343
- Python破解NOIP2015基础扫雷游戏:计算非地雷格周围地雷数(字节豆包 | 545点数解答 | 2026-02-02 17:34:02)49
- NOIP2015 基础题:揭秘骑士按规律获金币总数的算法!(字节豆包 | 552点数解答 | 2026-02-04 21:40:54)52
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)458
- Even More Odd Photos:求解 Farmer John 奶牛分组最大组数的算法解析(字节豆包 | 841点数解答 | 2026-02-03 15:18:32)33
- 基础倒水问题:n 个杯子 k 次倒水后水量全揭秘!(字节豆包 | 160点数解答 | 2026-02-04 21:37:25)35
- “龙虎斗”游戏难题破解:Python代码实现最小气势差距兵营选择(字节豆包 | 709点数解答 | 2026-02-05 17:06:22)36
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)66
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)24
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)389