
DFS
太难了人都傻了
这个作者很懒,什么都没留下…
展开
-
dfs全排列
C++有专门实现全排列的函数:next_permutation(start,end),这个函数在暴力解决问题方面有很大作用,使用时需要引入头文件algorithm,当当前序列不存在下一个序列时就会结束,若想得到一个序列的全部排列,那么使用前一定要记得先排序。int a[]={1,2,3,4};do{ cout<<a[0]<<' '<<a[1]<<' '<<a[2]<<' '<<a[3]<<endl; }w原创 2022-03-31 20:50:02 · 550 阅读 · 0 评论 -
记忆化DFS和基于优先队列的BFS算法笔记
记忆化DFS例1:斐波那契数列递推:效率高,可以避免很多重复的计算递归:优点:程序很简洁缺点:空间容易爆栈,时间慢int dfs(int n){ if(n == 1 || n == 2) return 1; else return ( dfs(n-1)+dfs(n-2) )%1000000007;}记忆化dfsint dfs(int n){ if(fib[n]) return fib[n]; if(n == 1 || n == 2) fib[n] = 1; else fi原创 2021-10-17 17:36:05 · 180 阅读 · 0 评论 -
组合博弈入门算法笔记
组合博弈入门算法笔记取子游戏:什么是组合游戏——有两个玩家;游戏的操作状态是一个有限的集合(比如:限定大小的棋盘);游戏双方轮流操作;双方的每次操作必须符合游戏规定;当一方不能将游戏继续进行的时候,游戏结束,同时,对方为获胜方;无论如何操作,游戏总能在有限次操作后结束。概念:必败点和必胜点(P点&N点)必败点(P点):前一个选手(Previous player)将取胜的位置成为必败点。即下一个选手必败。必胜点(N点):下一个选手(Next player)将取胜的位置成为必原创 2021-10-15 18:30:42 · 1175 阅读 · 0 评论 -
二分匹配算法笔记
二分匹配二分图的最大匹配在二分图的应用中,最常见的就是求————最大匹配很多其他的问题都可以转化为匹配问题来解决匈牙利算法题型:真正求二分匹配的题目很少,往往做一些简单的变化比如:二分图的最小顶点覆盖什么是二分图的最小顶点覆盖?在二分图中求最少的点,让每条边都至少和其中的一个点关联,这就是:二分图的”最小顶点覆盖“。一句话记忆:最小顶点覆盖就是用最少的点覆盖所有的边变化(二)DAG图的最小路径覆盖什么是DAG图的最小路径覆盖?用尽量少的不相交简单路径覆盖有向无环图(DAG)的所原创 2021-10-13 22:44:40 · 165 阅读 · 0 评论 -
DFS入门算法笔记
预备知识二叉跟的遍历1、先根遍历(根左右)2、中跟遍历(左根右)3、后根遍历(左右根)先根遍历结果:271653894中根遍历结果:175632849后跟遍历结果:153674982给定先根中根遍历结果,可唯一确定二叉跟给定中根后跟遍历结果,可唯一确定二叉根给定先根后根遍历结果,不能确定二叉跟深度优先搜索(DFS)深度优先搜索基本模型:深度优先搜索的关键在于解决“当下该如何做!”至于下一步该怎么做,则与当前一样(只是参数不同而已)。伪代码:void dfs(int s原创 2021-10-12 22:34:14 · 204 阅读 · 0 评论