题解 | 扫雷

扫雷

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



        
        

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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