> # ♻️ 资源
> **大小:** 35.1KB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100013186**](https://www.yuque.com/sxbn/ks/100013186)
**➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/88220841**](https://download.csdn.net/download/s1t16/88220841)
**注:更多内容可关注微信公众号,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
c++实现的深度优先遍历迷宫,迷宫大小为20*20,代码简练清楚,内涵关键注释。代码与网上都不一样。
深度优先遍历迷宫,核心思想是借助一个栈,站在一个节点上时,将它附近可以走的节点存在栈中,再按顺序找到下一个节点,重复刚才的操作,直到找到最终的终点。
**实现细节**:
- Stack函数不需要多说了,自己定义一个栈,这个栈是很关键的,像我刚才说的,他用来记录去过的节点,以保证不重不漏
- 重点是slove函数,slove()原理:
递归出口为找到出口或者没有出口的条件下整个地图被全部遍历将入口读出;分别进行上下左右移动并判定是否可走;如果可走则将其压栈,并递归;否则返回上一步。这是一个递归函数,因此深度优先本身的效率不高。
对于一个节点,坐标(x,y),我们这里规定只允许向四个方向移动,所以需要找的坐标是(x-1,y),(x+1,y)(x,y-1),(x,y+1),分别判断是否可以去,且是否去过,这就是本项目中最重要的地方了!
```cpp
void slove(zuobiao c,Stack &a,int (*Map)[20]){
zuobiao l=a.ntop();
if(l.x==c.x&&l.y==c.y){
return ;
}
if(pass(l.x,l.y+1,Map)){
zuobiao m;
m.x=l.x;m.y=l.y+1;
vi[m.x][m.y]=1;
a.push(m);
slove(c,a,Map);
}
else if(pass(l.x,l.y-1,Map)){
zuobiao m;
m.x=l.x;m.y=l.y-1;
vi[m.x][m.y]=1;
a.push(m);
slove(c,a,Map);
}
else if(pass(l.x-1,l.y,Map)){
zuobiao m;
m.x=l.x-1;m.y=l.y;
vi[m.x][m.y]=1;
a.push(m);
slove(c,a,Map);
}
else if(pass(l.x+1,l.y,Map)){
zuobiao m;
m.x=l.x+1;m.y=l.y;
vi[m.x][m.y]=1;
a.push(m);
slove(c,a,Map);
}
else {
if(a.bout()){
slove(c,a,Map);
}
else {
cout<<"没有路径可以到达指定的地点";
}
}
}
```
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692148410191-0a692f84-d0e0-4dce-9e22-b3ca971d622a.png#averageHue=%230f0f0f&clientId=ub8036d2f-5e15-4&from=paste&height=572&id=u105f3d8a&originHeight=715&originWidth=1456&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=31890&status=done&style=none&taskId=u228f5c4d-fc96-4060-993c-1499fc8cb02&title=&width=1164.8)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
c++实现的深度优先遍历迷宫,迷宫大小为20*20,代码简练清楚,内涵关键注释。代码与网上都不一样。 深度优先遍历迷宫,核心思想是借助一个栈,站在一个节点上时,将它附近可以走的节点存在栈中,再按顺序找到下一个节点,重复刚才的操作,直到找到最终的终点。
资源推荐
资源详情
资源评论
收起资源包目录
100013186-基于C++深度优先遍历迷宫.zip (4个子文件)
traverse_the_maze
深度优先遍历迷宫(qiu).cpp 3KB
LICENSE 1KB
深度优先遍历迷宫.doc 63KB
README.md 3KB
共 4 条
- 1
资源评论
神仙别闹
- 粉丝: 2673
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功