DFS BFS 搜索题目归纳

数据结构空间是否具有最短路特性备注
DFSstack O ( h ) O(h) O(h)通常要回溯、剪枝,对空间要求比较高的用DFS
BFSqueue O ( 2 h ) O(2^h) O(2h)最少步数、最短距离、最少操作几次

DFS

深搜(dfs)框架
参考:https://blog.csdn.net/weixin_45559159/article/details/104187523

void dfs(int x)//关于传入参数问题,根据题意而定,看在程序运行的过程中,哪些是在变的
{
    if(满足输出条件)
    {
        输出解;
        return ;
    }
    //剪枝操作
    if(目前已经没有必要进行下去的条件){
        return ;
    }
    //如果传入的条件,还需要继续搜下去,分析每一种情况后面跟哪些情况,然后循环,每个情况(注意前提:得符合题意)都深搜一下
     for(int i=1;i<=每种情况数;i++)
            if(满足进一步搜索条件)//判断是否合理
            {
                为进一步搜索所需要的状态打上标记;//是需要的状态
                dfs(t+1);
                恢复到打标记前的状态;//也就是说的{回溯一步}
            }
    }
}

DFS最重要的就是要考虑搜索顺序
每个题目最好画一下递归搜索树,便于理解
例题一:(输出不同方案,也可输出方案的总数)
AcWing 842. 排列数字【DFS】

例题二:(输出不同方案,也可输出方案的总数)
AcWing 843. n-皇后问题【DFS】【剪枝】

例题三:(输出不同方案,也可输出方案的总数)
AcWing 92. 递归实现指数型枚举【DFS】【递归】

例题四:(输出不同方案,也可输出方案的总数)
AcWing 94. 递归实现排列型枚举【DFS】【递归】

例题五:(输出不同方案,也可输出方案的总数)
AcWing 93. 递归实现组合型枚举【DFS】【递归】

例题七:(不同的方案数)
AcWing 1209. 带分数【DFS】【递归】【剪枝】【第四届蓝桥杯省赛C++B/C组,第四届蓝桥杯省赛JAVAA/B组】

例题八:(从初始位置出发能到达的瓷砖数、FloodFill)
AcWing 1113. 红与黑【《信息学奥赛一本通》】【DFS】【BFS】【Flood Fill】

例题九:(连通块的个数、FloodFill)
AcWing 1233. 全球变暖【FloodFill】【BFS】【DFS】

例题十:(最多花费的路费是多少)
AcWing 1207. 大臣的旅费【第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVAA组】【树的直径】【BFS】【DFS】【树形DP】

例题十一:(从起点坐标到终点坐标的方案总数)
洛谷 P1605 迷宫【搜索】【DFS】【BFS】

例题十二:(输出所有可行的路径,即所有不同方案)
洛谷 P1238 走迷宫【搜索】【DFS】


BFS

宽搜(bfs)框架

一、 判重数组st[] 一般入队时判重(保证每个点只会入队一次,从而保证时间复杂度是线性的) (特殊情况出队时判重,如A*算法、Dijkstra算法)
二、 queue
  1. queue ← \leftarrow 初始状态
  2. while (queue非空)
   {
     t ← \leftarrow 队头元素
     队头元素出队列
 
     for (扩展t)
     {
       ver ← \leftarrow 新节点
       if (!st[ver])
       {
         ver → \rightarrow 队尾
       }
     }
   }

宽搜(bfs)本质从一个状态扩展到另一个状态。不同宽搜题目的不同点在于状态的定义
主要有两大类, 第一类走迷宫类问题,矩阵的每一个格子是一个状态;第二类是八数码、数独类问题,整个矩阵(一个数组)是一个状态,每次枚举它能变成什么状态


例题一:(最少移动次数)
AcWing 844. 走迷宫【BFS】

例题二:(最少交换次数)
AcWing 845. 八数码【BFS】

例题三:(最少需要多少时间就能吃到奶酪)
AcWing 1101. 献给阿尔吉侬的花束【《信息学奥赛一本通》】【bfs】【bfs框架】

例题四:(从初始位置出发能到达的瓷砖数、FloodFill)
AcWing 1113. 红与黑【《信息学奥赛一本通》】【DFS】【BFS】【Flood Fill】

例题五:(逃脱所需最短时间)
AcWing 1096. 地牢大师【《信息学奥赛一本通》】【三维地图BFS】

例题六:(连通块的个数、FloodFill)
AcWing 1233. 全球变暖【FloodFill】【BFS】【DFS】

例题七:(最多花费的路费是多少)
AcWing 1207. 大臣的旅费【第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVAA组】【树的直径】【BFS】【DFS】【树形DP】

例题八:(从起点坐标到终点坐标的方案总数)
洛谷 P1605 迷宫【搜索】【DFS】【BFS】

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值