题解 | 扫雷
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd
找每个位置的八个方向上是否有雷,转换成在每个位置为中心的3*3正方形区域内寻找(除去正中心位置),复杂的地方在于处理边界上的位置。解决办法是把原来的区域包起来,即原来是4*4的区域,现在转换成6*6的区域,且新区域的边界上都没有雷,这样就便于处理和解决问题了 n, m = map(int, input().split()) matrix = [] virtual_hang=[ "." for i in range(m+2)] # 虚拟行 matrix.append(virtual_hang) # 在第一行添加虚拟行 result = [] for i in range(n): lst=list(input()) lst.insert(0,".") # 给每行的第一行位置插入“.”,表示没有雷 lst.append(".") matrix.append(lst) # 给每一行的结尾append "." matrix.append(virtual_hang) # 在最后也添加一行虚拟行 for i in range(1,n+1): for j in range(1,m+1): if matrix[i][j]=="*": print("*",end="") else: res=0 for p in range(i-1,i+2): for q in range(j-1,j+2): if matrix[p][q]=="*": res+=1 print(res,end="") print("")