栈的应用举例——迷宫求解

本文详细介绍了如何使用栈解决迷宫求解问题。通过在每次入栈时留下足迹,避免重复路径,并在出栈时擦除足迹,确保多路径的搜索可能性。程序思路是如果栈中有N个元素,就寻找从N-1到出口的其他路径,如果找不到,回溯到N-2,以此类推,直到找到新的解决方案。
摘要由CSDN通过智能技术生成
迷宫求解思路(求出所有的从入口到出口的路径):

do
{
   若当前位置可通
   则
{
则将当前位置插入栈顶;
留下足迹;
若该位置是出口

{输出该成功出逃的路径;
将出口从栈中删除同时擦除足迹;
将出口前一个通道块也从栈中删除同时擦除足迹;
顺时针向当前位置的下一个方向探索,进行下一轮循环;}
否则切换当前位置的东邻方向为新的当前位置进行探索;
}
   否则
{
若栈不空
{
则从栈中删除该元素并擦除足迹;
若栈不空且刚删除的元素已经顺时针查找了4个方向均不通
{ 进行不能通过的标记;
接着删除栈顶的下一个元素并擦除足迹;}
否则
{将刚才从栈中删除的元素将其查找方向顺时针加1之后重新入栈并留下足迹;
转向当前位置的下一个方向进行探索}
}
}

}while(栈不空)

#include<ios
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值