深度优先搜索(DFS)

深度优先搜索是一种⭐枚举⭐所有完整路径以遍历所有情况的搜索方法(暴力)考难点也就是考应用型DFS+剪枝+回溯

问题的引出

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

问题的解决

在这里插入图片描述
递归的问题,无不就是递归式递归边界的问题。

在这里插入图片描述在这里插入图片描述

背包问题

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

一类常见的DFS问题的解决方法(选择型DFS)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

DFS典型例题

1. 树型的DFS题

基于树的DFS题,考察点主要是体现在二叉树的前序、中序和后序遍历上。万变不离其中,都会有下面这几行代码:

dfs(root->left)
...
dfs(root->right)
...

2. 图型DFS题

图型DFS题主要需要注意设置一个bool数组vis来检测是否已经别访问过了,因为图是可能有环的呀~~~所以要避免死循环呢

3. 网格型DFS题

这种题目的典型形式就是给定一个网格,然后让你在网格上走来走去,从未满足一个条件之后退出DFS。
这类题目的主要套路有:

  1. 可能要设置 dir数组
  2. DFS函数可能需要返回 bool,需要对bool值进行判断;
  3. DFS函数可能需要剪枝
  4. DFS函数里面可能有回溯的操作;

4. 应用型且思维量大型DFS

这类题目通常需要一个很强的思维逻辑能力,能够从实际问题中抽取出DFS函数,这类题目有一些特点:

  1. DFS函数中 通常要传递数组下标
  2. DFS函数一般为bool型返回值函数;
  3. 一定会考剪枝
  4. 也可能会考察回溯!

5. 记忆化搜索型DFS

一种通过花费空间来节省时间的DFS,其实也算是一种剪枝,只不过这个剪枝是通过dp数组来实现的,可以说是动态规划的一种吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值