图、dfs、bfs
graph
dfs
bfs
1.clone graph
2.copy list with random pointer
3.topological sorting
4.permutations
5.subsets
6.n queens
7.subsetsII
8.palindrome partitioning
9.combination sum
10.combination sumII
11.word ladder
12.word ladderII
克隆图:先克隆点,再克隆边。
宽度优先搜索有模板,以后告诉了图中的一个点,遍历整张图先想到宽度优先搜索
宽度优先搜索一般有个队列
哈希表
一张图一般不会给你整张图,一般给你的是图中的某一个节点
拓扑排序: 度、入度、出度
每次遍历入度为0的点。去掉入度为0点的边,再遍历剩下的图的入度为0的点
本质上还是一个遍历图的问题
用宽度优先搜索,用dfs时间复杂度大
如果多个点入度为0,随便从哪个点开始排都可以,所以可能同一个图出现多个拓扑排序的结果
图的题主要掌握宽度优先搜索
图和树的宽度优先搜索的对比:都使用队列
树是循环左子树和右子树,图是循环整个相邻的点
有些图的遍历用hash表示这个节点有没有被遍历过
permutations:搜索问题的模板问题
找所有情况的问题想到用dfs,一般只有dfs才能搜索完所有的情况
dfs搜索树
所有的叶子节点相当于permutations问题的可行解
按照搜索树的思想去实现,每个叶子节点其实就是permutations问题的答案
写代码的时候,按照搜索树的思想去模拟搜索的过程就可以
需要回溯到本层,所以需要删除
递归的方法
permutations求所有的排列情况,subsets求所有的子集
subsets:求子集问题也是另一类模板题
去返回所有解,所有可行性的时候,考虑dfs
想到dfs,就需要构建深度优先搜索树
子集不分顺序
之前选择的元素,下一次就不再选择
这个深度优先搜索树,每个节点都是解
每次遍历是从position向后遍历
permutations:
时间复杂度:O(n!)
subsets:
时间复杂度: O(2的n次方)
n queens:一碰到求所有可行性的题,就想到用dfs的方式
转换为permutations问题,不一样的地方在于:每次按照permutations问题放置皇后之后,再写一个check函数,检查在列和对角线上是否有冲突
permutations变形上加了check函数
时间复杂度:O(n!)
subsetsII:需要排序。想把相同的元素排在一起,这样就可以考虑重复的情况。
palindrome partitioning:
与subsets类似,因为subsets也是针对每个值选与不选
时间复杂度:O(2的n-1次方),实际就是 O(2的n次方)
combination sum、combination sumII:求所有满足条件的子集
word ladder:简单图最短路的问题
不可以使用dfs
先用bfs求每个节点到起始节点的距离,然后使用dfs求出所有可行路径
图、dfs、bfs的更多相关文章
- 算法学习记录-图(DFS BFS)
图: 目录: 1.概念 2.邻接矩阵(结构,深度/广度优先遍历) 3.邻接表(结构,深度/广度优先遍历) 图的基本概念: 数据元素:顶点 1.有穷非空(必须有顶点) 2.顶点之间为边(可空) 无向图: ...
- 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS ...
- POJ2308连连看dfs+bfs+优化
DFS+BFS+MAP+剪枝 题意: 就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路: 首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...
- CF467D Fedor and Essay 建图DFS
Codeforces Round #267 (Div. 2) CF#267D D - Fedor and Essay D. Fedor and Essay time limit per test ...
- DFS/BFS+思维 HDOJ 5325 Crazy Bobo
题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...
- ID(dfs+bfs)-hdu-4127-Flood-it!
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相 ...
- [LeetCode] 130. Surrounded Regions_Medium tag: DFS/BFS
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- ACM:图的BFS,走迷宫
题目: 一个网格迷宫由n行m列的单元格组成,每一个单元格要么是空地(用1表示),要么是障碍物(用0来表示).你的任务是找一条从起点到终点的最短移动序列,当中UDLR分别表示往上.下.左.右移动到相邻单 ...
- HDU 4771 (DFS+BFS)
Problem Description Harry Potter has some precious. For example, his invisible robe, his wand and hi ...
随机推荐
- 菜鸟入门【ASP.NET Core】10:Cookie-based认证实现
准备工作 新建MVC项目,然后用VSCode打开 dotnet new mvc --name MvcCookieAuthSample 在Controllers文件夹下新建AdminController ...
- jdk1.7安装,cmd下 java -version出现错误:“could not open `D:\Java\jre7\lib\amd64\jvm.cfg”
cmd 下java -version出现错误:“could not open `D:\Java\jre7\lib\amd64\jvm.cfg”,出现这种错误可能是由于先前有安装老版本jdk,之后将新版 ...
- Raspberrypi 3B+ 安装 php+sqlite
按照网上的命令都为安装php5-fpm 和 php5-sqlite, 但是发现无法找到软件,可能是系统版本比较高的缘故,原来的版本已经不支持了. 经过努力华找到如下安装方法 sudo apt-get ...
- HDU5293(SummerTrainingDay13-B Tree DP + 树状数组 + dfs序)
Tree chain problem Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- mysql 5.7 线程阻塞处理
出现的错误: ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 解决办法: 查看sleep的进程 m ...
- 原生JS强大DOM选择器querySelector与querySelectorAll
在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...
- loadrunner 脚本开发-int型变量和字符串的相互转换
脚本开发-int型变量和字符串的相互转换 by:授客 QQ:1033553122 字符串转化为int型变量 Action2() { int j = 0; j = atoi("12345&qu ...
- BigDecimal常被忽略的问题
一:相除精度丢失的问题 BigDecimal的api除法相对加减乘要实现的复杂多了,只介绍常用的我遇到的问题: 问题:两数相除,如果9/3=3整除没问题,但是10/3=0.33333333...... ...
- 盐城 - 开设IT公司的好地方
盐城:位于江苏省北部,这一好像只能算三线的城市,不久前当选为“国家中心城市”.在全国仅有的50城市中名列34.它可成为发展IT产业的好地方. (1)人才济济.从这里走出去的高级人才数不胜数,留在这里的 ...
- [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED.txt
[20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED.txt --//简单探究12c TABLE ACCESS BY INDEX ROWID BATCHE ...