题解 | #迷宫问题#

迷宫问题

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

# 输入:地图尺寸
m, n = map(int, input().split())
# 输入:绘制地图
matrix = []
for i in range(m):
    matrix.append(list(map(int, input().split())))


# 求路线的方法
def way(r, c, rec=[(0, 0)]):
    '''
    打印路线
    :param r: 游标所在行号
    :param c: 游标所在列号
    :param rec: 路线记录容器
    :return: 路线
    '''
    # 向右
    if c + 1 < n and matrix[r][c + 1] == 0:  # 没出界,右边是0
        if (r, c + 1) not in rec:  # 不走回头路
            way(r, c + 1, rec + [(r, c + 1)])
    # 向左
    if c - 1 >= 0 and matrix[r][c - 1] == 0:  # 没出界,左边是0
        if (r, c - 1) not in rec:
            way(r, c - 1, rec + [(r, c - 1)])

    # 向下
    if r + 1 < m and matrix[r + 1][c] == 0:
        if (r + 1, c) not in rec:
            way(r + 1, c, rec + [(r + 1, c)])
    # 向上
    if r - 1 >= 0 and matrix[r - 1][c] == 0:  # 没出界,上边是0
        if (r - 1, c) not in rec:
            way(r - 1, c, rec + [(r - 1, c)])


    if (r, c) == (m - 1, n - 1):  # 到达出口
        for i in rec:
            # print(i)
            print('(' + str(i[0]) + ',' + str(i[1]) + ')')
        # return rec


# 执行
way(0, 0, rec=[(0, 0)])

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务