题解 | 扫雷

扫雷

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("")
            
                



        
        

全部评论

相关推荐

_mos_:我以为手抄报简历就已经很顶了,没想到还有表格简历
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务