当前位置:   article > 正文

蓝桥杯备考冲刺必刷题(Python) | 549 扫雷

蓝桥杯备考冲刺必刷题(Python) | 549 扫雷

学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。

附上汇总贴:蓝桥杯备考冲刺必刷题(Python) | 汇总-CSDN博客


【题目描述】

在一个n行m列的方格图上有一些位置有地雷,另外一些位置为空。

请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。

【输入】

输入的第一行包含两个整数n,m。

第2行到第n+1行每行包含m个整数,相邻整数之间用一个空格分隔。如果对应的整数为0,表示这一格没有地雷。如果对应的整数为1,表示这一格有地雷。

其中,1≤n,m≤100。

【输出】

输出n行,每行m个整数,相邻整数之间用空格分隔。

对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出9。

【输入样例】

  1. 3 4
  2. 0 1 0 0
  3. 1 0 1 0
  4. 0 0 1 0

【输出样例】

  1. 2 9 2 1
  2. 9 4 9 2
  3. 1 3 9 2

【代码详解】

  1. n, m = [int(i) for i in input().split()] # 输入n和m
  2. a = [[int(i) for i in input().split()] for i in range(n)] # 输入a矩阵
  3. b = [[0 for i in range(m)] for i in range(n)] # 初始化b矩阵
  4. dx=[-1,-1,-1,0,0,1,1,1] # 定义x和y的偏移量
  5. dy=[-1,0,1,-1,1,-1,0,1]
  6. for x in range(n): # 遍历x和y坐标
  7. for y in range(m):
  8. if a[x][y]==1: # 如果[x,y]点上有地雷
  9. b[x][y]=9 # 标记为9
  10. else: # 否则
  11. cnt = 0 # 定义计数器,统计8个方向的地雷数量
  12. for i in range(8): # 遍历8个方向
  13. xx = x+dx[i] # x和y偏移
  14. yy = y+dy[i]
  15. if xx>=0 and xx<n and yy>=0 and yy<m: # 在坐标范围内
  16. if a[xx][yy]==1: # 如果位置上有地雷
  17. cnt+=1 # 计数器自增1
  18. b[x][y]=cnt # 标记周围地雷数量
  19. for i in range(n): # 输出b矩阵
  20. for j in range(m):
  21. print(b[i][j], end=' ')
  22. print()

【运行结果】

  1. 3 4
  2. 0 1 0 0
  3. 1 0 1 0
  4. 0 0 1 0
  5. 2 9 2 1
  6. 9 4 9 2
  7. 1 3 9 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/216131
推荐阅读
相关标签
  

闽ICP备14008679号