题解 | #迷宫问题#

迷宫问题

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

#bfs
#为什么元祖放入字典里多一个空格   (0,0)-> (0, 0)?
dirs = [(0,1),(1,0),(0,-1),(-1,0)]	#四个方向
queue = []  
def mark(maze,pos):		#标记走过的
    maze[pos[0]][pos[1]] = 2 

def bfs(maze,start):
    queue.append(start)
    mark(maze, start)
    parent = {start:None}	#接收前一个点
    while len(queue) > 0:
        pos = queue.pop(0)
        for i in range(4):
            nextp = (pos[0] + dirs[i][0],pos[1] + dirs[i][1])
            if 0 <= nextp[0] < m and 0 <= nextp[1] < n and maze[nextp[0]][nextp[1]] == 0:
                mark(maze,nextp)
                queue.append(nextp)
                parent[nextp] = pos
    return parent

lst = input().split()
m,n = int(lst[0]),int(lst[1])
maze,paths = [],[]
for i in range(m):
    maze.append(list(map(int,input().split())))
start,end = (0,0),(m-1,n-1)
parent = bfs(maze,start)
while end != None: #逆向输出得到路径
    paths.insert(0,end)
    end = parent[end]
for i in paths:
    print(str(i).replace(' ',''))	#输出元祖会报错,多了一个空格,然而我并不知道为什么会多个空格。求解!

全部评论

相关推荐

球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务