图论
井底的笨鸟
Stay hungry,stay foolish.
展开
-
DFS——矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符原创 2016-05-29 13:48:05 · 844 阅读 · 0 评论 -
BFS、DFS——surrounded-regions矩阵包围XXOO
题目描述Given a 2D board containing'X'and'O', capture all regions surrounded by'X'.A region is captured by flipping all'O's into'X's in that surrounded region .For example,X X X X原创 2016-06-04 22:40:25 · 5412 阅读 · 0 评论 -
BFS、DFS——机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?public class Sol原创 2016-05-29 14:20:07 · 3815 阅读 · 0 评论 -
BFS广度优先遍历
树的层序遍历即为BFS的应用。实质就是利用一个队列将顶点v的邻接点保存,因树的结构比较特殊,所以不需要进行设置flag访问位,但图的情况比较复杂,一般需要对每个结点是否被访问进行标记。利用BFS可以很容易的利用层数求出最短的步数,比如二叉树利用层序遍历求树的高度,但深搜一般也可以实现。原创 2016-08-03 15:45:23 · 5130 阅读 · 1 评论 -
BFS、DFS——求最短通路值
题目:用一个整形矩阵matirx表示一个网络,1代表有路,0代表无路,每一个位置只要不越界,都有上下左右四个方向,求从左上角到右下角的最短通路值。例如,matrix为: 1 0 1 1 1 1 0 1 0 1 1 1原创 2016-07-23 20:35:57 · 1471 阅读 · 0 评论 -
DFS——palindrome-partitioning
题目:给定一个字符串,将字符串分成多个部分,满足每一部分都是回文串,请输出所有可能的情况。 该问题的难度比较大,很可能第一次遇到没有思路,这很正常。下面我们一点点分析,逐步理清思路。先不考虑所有的情况,针对一个符合条件的划分,每一部分都是一个回文子串,而且各部分的长度不固定。也即每一部分都是原始字符串的一个子串,且满足回文条件。所有的划分都满足上述条件,所以这就启发我们原创 2016-07-17 22:00:28 · 634 阅读 · 0 评论 -
网易——比较重量(图的广度优先搜索)
小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请原创 2016-07-30 20:21:52 · 3195 阅读 · 0 评论 -
DFS深度优先搜索
深度优先搜索是一个递归的过程。它从图中某个满足要求的顶点v出发,访问此节点并将访问位更改,然后从v的未被访问的邻接点出发,深度优先遍历图,直到图中所有和v有路径相通的顶点都被访问到。遍历过程如下: DFSfunc(){//DFS起始的接口函数 boolean[][] flag=new boolean[][];//访问标记的数组,指明一个顶点是否被访问过。 for(a原创 2016-08-03 15:04:09 · 4874 阅读 · 0 评论