迷宫系列(二)-DFS算法

本文介绍如何使用DFS算法在Scratch中解决迷宫问题。通过初始化角色、设置栈和访问状态,从起点开始,利用DFS进行自动寻路,将路径记录在解法路径列表中,最终回溯生成完整的解题路径。

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

上一次我们生成了一个随机迷宫,这次我们就用DFS算法来进行自动寻路吧!

首先我们在上一次迷宫随机算法的基础上创建一个角色,使用这个角色来走迷宫,并完成一些初始化设置:
在这里插入图片描述
在这里插入图片描述
我们看到这里有四个列表:stack,seen,parent和解法路径。DFS使用到的是先进后出的栈,我们用stack列表来存储。seen列表则用来存储已访问的节点,0表示未访问,1表示已访问;parent列表用来存储每个节点的父节点,将这两个列表的每一项填充上0。最后,使用解法路径列表存储解出的路径。

接着设定初始位置,并将初始位置放入stack:
在这里插入图片描述
然后取stack的最后一个节点,将seen列表对应编号项标记为已访问,之后删除这个stack节点,最后将这个节点上下左右的节点入栈(如果这个节点不是墙,而且seen列表中的对应项没有标记为1):
在这里插入图片描述
这是将上下左右节点入栈的具体实现。首先确保该节点不是墙,然后确保该节点没有被访问过,如果这两个条件都满足,将把这个节点加入stack列表,然后将该节点的parent列表对应位置设置为父节点的编号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值