数据结构之用栈实现迷宫问题(dfs)

本文介绍了如何使用深度优先搜索(DFS)算法解决从迷宫左上角到指定点的路径寻找问题。文章首先阐述了DFS的基本原理,并提供了相关代码实现。DFS是一种树或图的遍历策略,它沿着树的深度进行搜索,直至所有节点都被访问。在最坏情况下的时间复杂度为O(!n)。

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

给一个n*n的方格,让你求从左上角到所给一点的任意一条路径并输出

该题用到dfs,以下是对dfs的简要解析  :详解请参见 传送门

dfs是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。属于盲目搜索,最糟糕的情况算法时间复杂度为O(!n)。

下面上代码:

#include<iostream>
#include<cstdio>
#define M 8
#define N 8
#define Maxn 100
using namespace std;
int mg[M+2][N+2];
typedef struct {
    int i,j,di;
}Box;
typedef struct {
    Box data[Maxn];
    int top;
}StType;
bool Push(StType* &s,Box e){
//    if(s->top==Maxn-1){
//        return false;
//    }
    s->top++;
    s->data[s->top]=e;
    return true;
}
void Init(StType *&s){
    s=(StType*)malloc(sizeof(StType));
    s->top=-1;
}
bool Pop(StType *&s,Box &e){
    if(s->top==-1){
        return false;
    }
    e=s
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值