题解 | #迷宫问题#

迷宫问题

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

def findMazePath(maps):
    if not maps or not maps[0]:
        return 0

    rows, cols = len(maps), len(maps[0])
    directions = [(-1, 0), (0, -1), (1, 0), (0, 1)]  

    # 记录已经访问过的单元格
    visited = [[False for _ in range(cols)] for _ in range(rows)]

    path = []
    def dfs(i, j):
        # 若为终点,返回True
        if i == rows - 1 and j == cols - 1:
            path.append((i,j))
            return True
        # 记录已访问的单元格
        visited[i][j] = True
        path.append((i,j))

        for dx, dy in directions:
            x, y = i + dx, j + dy

            if 0 <= x < rows and 0 <= y < cols and not visited[x][y] and maps[x][y] == 0:
                if dfs(x, y):
                    return True
        # 如果从当前点的所有方向都无法到达终点,从路径中移除此点,并回溯
        path.pop()
        return False
    dfs(0, 0)
    return path

def main():
    rows, cols = map(int, input().split())
    maps = [list(map(int, input().split())) for _ in range(rows)]
    path = findMazePath(maps)
    for x in path:
        print("(%d,%d)"%(x[0],x[1]))

if __name__ == "__main__":
    main()

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务