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的更多相关文章

  1. 算法学习记录-图(DFS BFS)

    图: 目录: 1.概念 2.邻接矩阵(结构,深度/广度优先遍历) 3.邻接表(结构,深度/广度优先遍历) 图的基本概念: 数据元素:顶点 1.有穷非空(必须有顶点) 2.顶点之间为边(可空) 无向图: ...

  2. 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS ...

  3. POJ2308连连看dfs+bfs+优化

    DFS+BFS+MAP+剪枝 题意:       就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路:      首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...

  4. CF467D Fedor and Essay 建图DFS

      Codeforces Round #267 (Div. 2) CF#267D D - Fedor and Essay D. Fedor and Essay time limit per test ...

  5. DFS/BFS+思维 HDOJ 5325 Crazy Bobo

    题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...

  6. 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)

    [题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...

  7. ID(dfs+bfs)-hdu-4127-Flood-it!

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相 ...

  8. [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 ...

  9. ACM:图的BFS,走迷宫

    题目: 一个网格迷宫由n行m列的单元格组成,每一个单元格要么是空地(用1表示),要么是障碍物(用0来表示).你的任务是找一条从起点到终点的最短移动序列,当中UDLR分别表示往上.下.左.右移动到相邻单 ...

  10. HDU 4771 (DFS+BFS)

    Problem Description Harry Potter has some precious. For example, his invisible robe, his wand and hi ...

随机推荐

  1. 网页三剑客:HTML+CSS+JavaScript 之CSS概述

    CSS 简介 什么是 CSS? CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是 ...

  2. Schwartz–Zippel lemma

    鬼知道老师从哪儿扒的这东西啊,.... 百度了一下毛都没有啊,维基百科看不懂啊.. 定理 一个$m$元$n$次多项式,在域$F$内随机给每个变量赋值 等于零的概率小于$\dfrac{n}{|F|}$ ...

  3. 【读书笔记】iOS-设计简单的Frenzic式益智游戏

    如果你决定用UIView动画或Core Animation,一定要编写一些测试用例,模拟游戏可能遇到的要求最高的动画,另外不要忘记播放声音.不要等到最后才增加声音,因为在iPhone上播放音乐和音效确 ...

  4. python之正则表达式及RE模块

    正则表达式(匹配字符串)web界面正则匹配工具:http://tool.chinaz.com/regex/ 元字符 1 . 匹配除换行符之外的任意字符 2 \w 匹配数字字母下划线 3 \d 匹配数字 ...

  5. 安卓开发_WebView设置打开网页缩放问题

    之前实现打开网页的方式,测试后,发现不能够对网页进行缩放操作,这对部分网页来说是十分不便的, 百度了一下解决方案 其实只需要加几行代码就可以实现网页缩放操作 settings.setUseWideVi ...

  6. 喜闻乐见-Android简介

    本文主要是对Android系统做一个简介,包括其架构.启动流程.沙箱机制.APK.Darlvik以及ART. 1. 架构 Android是基于Linux内核开发出的一个移动操作系统,系统结构大致可以分 ...

  7. Collections工具类

    Collections 是一个操作 Set.List 和 Map 等集合的工具类. Collections 中提供了一系列静态的方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变. ...

  8. 使用VSTS的Git进行版本控制(六)——拉取请求

    使用VSTS的Git进行版本控制(六)--拉取请求 在将代码合并到主干之前,拉取请求让团队对特性分支的更改提供反馈.审阅人可以通过建议修改留下评论,并投票批准或拒绝代码. 任务1:在Visual St ...

  9. WebStorm连接Github教程

    上学期刚开学的时候看过一次git相关的内容,很久没用过,忘了,两个月前又看了一次还精心做了笔记,也没有具体使用,又忘了,所以,避免又双叒叕忘了,我决定正式把git用起来.刚开始是通过Git Bash来 ...

  10. 洗礼灵魂,修炼python(30)--装饰器(2)—>装饰器总结+进阶使用

    在上一篇博文的经典案例中,我想你应该对装饰器有很好的了解了,不过光有那些还不够真的,还需要总结和进阶一下,所以本篇博文解析装饰器进阶. 装饰器 1.什么是装饰器? 个人理解:装饰器又叫语法糖,指的是对 ...