赞
踩
学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。
附上汇总贴:蓝桥杯备考冲刺必刷题(Python) | 汇总-CSDN博客
【题目描述】
在一个n行m列的方格图上有一些位置有地雷,另外一些位置为空。
请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。
【输入】
输入的第一行包含两个整数n,m。
第2行到第n+1行每行包含m个整数,相邻整数之间用一个空格分隔。如果对应的整数为0,表示这一格没有地雷。如果对应的整数为1,表示这一格有地雷。
其中,1≤n,m≤100。
【输出】
输出n行,每行m个整数,相邻整数之间用空格分隔。
对于没有地雷的方格,输出这格周围的地雷数量。对于有地雷的方格,输出9。
【输入样例】
- 3 4
- 0 1 0 0
- 1 0 1 0
- 0 0 1 0
【输出样例】
- 2 9 2 1
- 9 4 9 2
- 1 3 9 2
【代码详解】
- n, m = [int(i) for i in input().split()] # 输入n和m
- a = [[int(i) for i in input().split()] for i in range(n)] # 输入a矩阵
- b = [[0 for i in range(m)] for i in range(n)] # 初始化b矩阵
- dx=[-1,-1,-1,0,0,1,1,1] # 定义x和y的偏移量
- dy=[-1,0,1,-1,1,-1,0,1]
- for x in range(n): # 遍历x和y坐标
- for y in range(m):
- if a[x][y]==1: # 如果[x,y]点上有地雷
- b[x][y]=9 # 标记为9
- else: # 否则
- cnt = 0 # 定义计数器,统计8个方向的地雷数量
- for i in range(8): # 遍历8个方向
- xx = x+dx[i] # x和y偏移
- yy = y+dy[i]
- if xx>=0 and xx<n and yy>=0 and yy<m: # 在坐标范围内
- if a[xx][yy]==1: # 如果位置上有地雷
- cnt+=1 # 计数器自增1
- b[x][y]=cnt # 标记周围地雷数量
- for i in range(n): # 输出b矩阵
- for j in range(m):
- print(b[i][j], end=' ')
- print()
【运行结果】
- 3 4
- 0 1 0 0
- 1 0 1 0
- 0 0 1 0
- 2 9 2 1
- 9 4 9 2
- 1 3 9 2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。