递归方式求解迷宫问题(对比栈)

迷宫问题的三种求解方法(递归求解、回溯求解和队列求解) 目录 一、迷宫问题的三种求解方法 递归求解 回溯求解 队列求解 二、华为迷宫问题 一、迷宫问题的三种求解方法 在迷宫问题中,给定入口和出口,要求找到路径。本文将讨论三种求解方法,递归求解、回溯求解和队列求解。 在介绍具体算法之前,先考虑将迷宫数字化。这里将迷宫用一个二维的list存储(即list嵌套在list里),将不可到达的位置用1表示,可到达的位置用0表示,并将已经到过的位置用... 阅读详情

前面我们分析的是用队列和栈求解迷宫问题,感兴趣的可以看一下:
https

算法描述

我们知道递归和栈其实是很类似的,所以用递归求解的思路与栈的思路大致相同,下面我们来看具体思路:

建立迷宫

  1. 首先我们用一个二维数组建立迷宫地图( 其中1表示障碍,0表示可走坐标,2表示走过的路径用以记录):

判断下一步的方向

  1. 然后我们判断四个方向上、右、下、左(顺时针方向)是否可走,即该位置为空地,无障碍,且未走过(重点):
    在这里插入图片描述

判断失败时回溯

  1. 当我们走到一个结点位置时,发现上下左右都或有障碍,或已走过时则说明这条路径是错误的,于是就回溯至上一节点,让上一结点继续对四个方位进行试探,以此寻找其他的路径.
    此时的操作回溯的操作为将此层递归结束,回到上一层递归中,再判断下一个方位。

找到终点时即可结束寻找

  1. 当判断的点为我们设定的重点时,及说明已经有一条从起点到终点的路径了,所以此时我们就可以结束寻找了。

输出路径

  1. 因为再寻找到过程中我们对其中的路径所过的点都做了记录,因此此时将路径输出即可。
  2. 以上迷宫问题就基本得到了解决,我们在主函数调用即可。

代码清单

构建部分

#include<iostream>
using namespace std;
typedef struct{
   
   	//记录位置
	int hang;
	int lie;
	int next;
}Weizhi;

//建立迷宫 
	//				0 1 2 3 4 5 6 7 8 9  //10*10的迷宫
	int a[][10]={
   
   	1,1,1,1,1,1,1,1,1,1,
					1,-1,1,0,0,0,1,1,1,1,
					1,0,0,0,0,0,1,0,0,1,
					1,0,1
迷宫问题(栈,递归,队列) 这个迷宫问题的解答,主要参考了《LINUX一站式编程》中的第12章“栈与队列”的正文和习题。  假设有这样一个迷宫,用一个5*5的数组来表示,其中0表示有路可走,1表示无路可走。那么,如何找到一个通路,使得可以从左上角的(0,0)点走到右下角的(4,4)点? 迷宫 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 阅读详情

相关推荐

用栈和递归求解迷宫问题

一、问题概述 小时候,我们都玩过走迷宫的游戏吧。看一下这个图例: 遇到这种问题时,我们第一反应都会先找到迷宫的入口点,然后对上下左右四个方向进行寻迹,  检测当前位置是否是通路,是否可以通过,直至找到出口位置,才是迷宫的正确轨迹。如若走到死胡  同里,则必须返回重新选择路径走。  我们来模拟一下迷宫问题,我们的迷宫是这样的: 哈哈~虽然有点low!但是可以帮助我们解决实

xxpresent的博客 1万+

DFS求解迷宫问题(输出所有的路径)

问题:给出一个n*n的迷宫,起点为(0,0),终点为(n-1,n-1).可以向上、下、左、右四个方向走. 任务:1.判断是否有可行路径            2.如果有可行路径,输出所有的可行路径. ———————————————————————————————————————————————————— 如下图所示,当前位置为中间点,如果中间点不是终点,那么会从4个方向进行下一步探测,进入

tensory的博客 2万+

图求解迷宫问题(对比队列)

大家好,今天我分享的是用图求解迷宫问题。我们知道用栈和递归求解出的路径并不是最简的路径,队列求解出的路径是最短路径,而图求解出的迷宫路径是怎样的呢? 目录如下可快速查阅算法描述用二维数组定义迷宫将二维数组中值为0,即空白可走的位置看成结点将所有结点的邻接矩阵求出深度优先遍历找到迷宫终点,记录并输出代码清单构建图部分构建邻接矩阵函数深度优先遍历部分输出迷宫及主函数部分输出结果总结 算法描述 1. 用二维数组定义迷宫; 2. 将二维数组中值为0,即空白可走的位置看成结点; 3. 将所有结点的邻接矩阵求出; 4.

Nothing_Wzy的博客 2903

《校招大厂中等难度笔试题》纯C语言求解迷宫问题——进来测测你数据结构初阶学的怎么样?

今天我为大家带来了一道校招中大厂中等难度的笔试题,让大家感受一下校招大厂的笔试题难度是怎样的!

m0_62171658的博客 2405

迷宫问题(栈及递归两种实现方式)

迷宫问题:两种实现方式 1)递归实现:简易,但效率低,时间、空间时间复杂度较大 2)栈实现,时间空间复杂度较低

数据结构栈和队列解决迷宫问题

这个文档详细的介绍了利用栈和队列解决迷宫问题的步骤,对与初学者学习数据结构能很好的进行辅导

(SCADA)监控与数据采集系统

SCADA应用于监控和采集数据来控制工业过程软件。它通过收集和传输实时数据,帮助操作员监视和控制各种设备和过程。

软件技术的专栏 4544

Jetson Orin Nano@Ubuntu22.04:IMX219 CSI摄像头配置全流程与避坑指南

本文详细介绍了在Jetson Orin Nano@Ubuntu22.04系统上配置IMX219 CSI摄像头的全流程,包括硬件安装、驱动配置、常见问题排查及性能优化。特别强调了排线方向、驱动模式选择等关键细节,并提供了实用的命令和解决方案,帮助开发者高效完成摄像头部署与调试。

prometheus9mon的博客 320

生成对抗网络(GAN、DCGAN、ACGAN)-----学习笔记

生成对抗网络学习笔记 生成对抗网络有两个关键结构:生成模型、判别模型。 生成模型:输入是一个服从正态分布的N维向量,利用这个N维向量生成一张图片。 判别模型:对于生成模型输出的图像判别它是不是真的图像。 生成模型和判别模型的博弈关系在于:生成模型的目的是生成让判别模型无法判别真伪的图像,而判别模型的目的是判断输入图像的真伪。 结合代码来看生成对抗网络中,生成器和判别器的训练过程: 判别模型的训...

weixin_43227526的博客 5490

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 280

26版SPSS操作教程(高级教程第二十一章)

#专注方能成事 #本期内容:信度分析 #由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次高级教程第二十章的学习笔记,希望能得到一些指正和帮助~

你好! 1710

yolov26改进 | Neck/颈部创新篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov26(全网独家创新)

本文提出了一种创新的分层特征融合模块HFFB(Hierarchical Feature Fusion Block)来改进YOLOv26的neck部分,构建了名为HFPN的新型特征金字塔网络。该模块通过三分支结构融合局部特征(CNN提取)、全局特征(Swin Transformer提取)和中间特征,并包含空间注意力(SA)、通道注意力(CA)和残差反向MLP(IRMLP)等组件来优化特征融合效果。实验表明,该方法能针对不同尺度目标(大/中/小)进行自适应检测,可根据具体数据集需求选择不同配置。文章详细提供了核

Snu77的博客 485

Logstash安装部署

1. 部署及安装所用的用户不能是root。

lmj3732018的博客 4294

2025年7月5日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案

2025年7月5日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案

伶俐角少儿编程 898

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 栈求解迷宫问题
下一篇: 图求解迷宫问题(对比队列)
Nothing_Wzy
博客等级 码龄7年 50粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值