[数据结构] python 队列解决迷宫问题

利用Python实现迷宫问题的解决,采用队列进行广度优先搜索。从起点开始,逐个探索相邻节点,直到找到出口。在编程中,需要考虑节点的邻居、队列的管理、路径记录以及判断是否到达终点的条件。最终输出从起点到终点的路径。
摘要由CSDN通过智能技术生成

例:给一个二维列表(如图所示),表示迷宫(0表示通道,1表示围墙)。给出算法,求一条走出迷宫的路径。

 队列——广度优先搜索

思路:使用队列存储当前正在考虑的节点。从一个节点开始,寻找所有接下来能继续走的点,继续不断寻找直到找到出口。

写代码时分别要考虑以下问题:

1. 当前所在节点四个方向分别为 x+1,y; x-1,y; x,y+1; x,y-1

2. 开辟队列时,要开辟一个三维队列,第三个空间用来记是哪个节点让它来的

3.当前节点是队首节点

4.当走到终点输出队列时,根据是谁让最后一个节点来的来找真实队列

5.可开辟另外一个队列来存储是谁让他来的

6.最后一个节点即队列最后一个元素

7. 没走到终点并且下一节点能走时,把该下一节点加入栈并标记为2,表示走过了

8.四条路都尝试走,如果一条路都不能走时,就说明没有路可以走了
 

from collections import deque

maze = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
    [1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
    [1, 0, 0, 0, 0, 1, 1, 0, 0, 1],
    [1, 0, 1, 1, 1, 0, 0, 0, 0, 1
  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值