【Python数据机构】实现迷宫求解

本文介绍了一种使用栈和递归算法解决迷宫问题的方法。通过标记已访问路径并尝试所有可能的方向来寻找从入口到出口的路径。如果遇到死胡同,则回溯至上一节点继续探索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过使用栈和递归实现迷宫的求解

def mazesolve(pos,record=None,exit1=None):
    dir=[(0,1),(1,0),(-1,0),(0,-1)] #四个方向
    for i in range(4):
        maze[pos[0]][pos[1]] = 2 #走过的路用2标记
        move=[pos[0]+dir[i][0],pos[1]+dir[i][1]]
        if maze[move[0]][move[1]]==0:
            pos=move #如果有路,则向前走
            if pos == exit1: #若到达出口,则结束
                print('arrived')
                for i in range(12):
                    print(maze[i])
                quit(0)
            break
    if 0 not in (maze[pos[0]+1][pos[1]], maze[pos[0]-1][pos[1]], maze[pos[0]][pos[1]+1], maze[pos[0]][pos[1]-1]):
        #判断周围是否是死胡同
        maze[pos[0]][pos[1]] = 2
        pos=record.pop() #是的话返回上一个点
        return mazesolve(pos, record,exit1)
    else:
        record.append(pos)
        return mazesolve(pos,record,exit1)


if __name__=='__main__':
    entry=[1,0]
    exit1=[2,13]
    maze=[[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
          [0,0,0,0,1,1,0,0,0,1,0,0,0,1],
          [1,0,0,0,0,0,0,1,0,1,0,1,0,0],
          [1,0,1,0,1,1,1,1,0,1,0,1,0,1],
          [1,0,1,0,0,0,0,0,0,1,1,1,0,1],
          [1,0,1,1,1,1,1,1,1,1,0,0,0,1],
          [1,0,1,0,0,0,0,0,0,0,0,1,0,1],
          [1,0,0,0,1,1,1,0,1,0,1,1,0,1],
          [1,0,1,0,1,0,1,0,1,0,1,0,0,1],
          [1,0,1,0,1,0,1,0,1,1,1,1,0,1],
          [1,0,1,0,0,0,1,0,0,1,0,0,0,1],
          [1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
    mazesolve(entry,[],exit1=exit1)

运行结果:
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值