详解DFS(深度优先搜索)算法+模板+指数+排列+组合型枚举+带分数四道例题

目录

 前言:

1.背景

2.图解分析 

 3.算法思想

4.dfs四大例题

 4.1.递归实现指数型枚举

 题解:

4.2.递归实现排列型枚举

题解:

字典序:

4.3.递归实现组合型枚举

 题解:

4.4.带分数

题解:

5.最后:


 前言:

        大家好呀,我是山上雪,时隔多日终于回归,归功于小姑娘的打赏激励以及佬们日更一篇的节奏使得我坐不住了!!

激动万分的写下了该篇博客,文有不足,望各位大佬批评指正

                               动力源泉如下!!!!!!!!!

1.背景

深度优先算法(Depth First Search,简称DFS):本文均采用递归方式,搜索每一条路径,一路走到黑直到不能再走则返回,每个结点仅访问一次。

2.图解分析 

对于这个图   

 我们想到  7这个地方的话怎么走呢?1是起点,有5条可能的路径

 1-2-5

1-2-6

1-3-7(成功)

1-3-8

1-4

可以看出,想要到7则需要遍历所有可能路径,如果加一条件,找到则退出是可以减少计算量的

 3.算法思想

dfs中最重要的算法思想是回溯剪枝

        回溯就是当你面对多条路的时候,你优先选择一条路后,当你选择多条路的另一条路的时候你需要回到初始状态,也就是说,这条路走不通你就退回,然后选择下一条路,满足回溯条件的某个状态的点称为“回溯点”。

       剪枝,因为dfs算法用的递归实现,这时候就可能产生了许多不必要的计算过程,而这些计算过程通常很大。所以我们就可以加一个限制条件,使其不用计算直接返回,这种思想就像是剪掉了树的枝条,所以称为“剪枝”。

4.dfs四大例题

 4.1.递归实现指数型枚举

从 1∼n这 n 个整数中随机选取任意多个,输出所有可能的选择方案。

输入格式

输入一个整数 n。

输出格式

每行输出一种方案。

同一行内的数必须升序排列,相邻两个数用恰好 1个空格隔开。

对于没有选任何数的

  • 47
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 52
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山上雪️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值