DFS
Lilyan_blog
这个作者很懒,什么都没留下…
展开
-
搜索入门——小学数学问题
1.问题描述:2.算法分析这道题目使用暴力枚举以及dfs(深度优先搜索)都可以解决。a.暴力枚举:首先我们需要确定枚举的范围:这道题目有12个空,如果枚举12个空的值则需要写12个循环,程序会跑不起来。其实我们只需要枚举算式左边的八个空格,然后右边的空格通过计算来判断即可,这样就是8个循环,全部枚举完就是128这样一个时间复杂度,通常计算机计算1s的时间复杂度是109差不多接近了,...原创 2018-12-03 08:48:38 · 625 阅读 · 0 评论 -
搜索入门——八皇后问题
1.问题描述:2.问题分析首先八皇后问题相信大家多多少少都有所了解,毕竟是比较经典的回溯搜索问题了。八皇后的规定是每一枚皇后的行列以及左斜线,右斜线上仅此只能存在一个。和国际象棋中的皇后规则一样。如图:画X的是不能放置皇后的如果我们用搜索来做的话我们可以搜索行,然后通过枚举列来判断是否能放,这里最大的难点是找到左斜线以及右斜线的规律,可以看到左斜线的坐标分别为(1,1),(2,2)...原创 2019-02-02 19:47:12 · 991 阅读 · 0 评论 -
搜索进阶——数独问题
1.问题描述:2.问题分析:这道题目是比较经典的搜索问题,当你学会怎么解八皇后问题的时候,就慢慢的进入了搜索之道,这一道题目比较难的点就是33的格子内填充的数不能重复。行和列不重复很简单,怎么判定重复与否,我们将数独棋盘分为9个33的棋盘并且将其编号:可以发现规律每一个编号的33的格子为当前的x,yx / 3 * 3 + y / 3我们可以在主函数里通过设置判断行,列,33格子是...原创 2019-02-03 16:43:31 · 1588 阅读 · 1 评论 -
搜索入门——全排列问题
1.问题描述:2.算法分析:这道题目其实是搜索入门的一道题搜索,可以使用dfs来搜索,怎么搜索呢,首先我们输入一个n,这个n代表全排列1-n,使用dfs搜索的话,我们要确定边界出口,我们是一步一步去试,每一次次数step + 1,当step比n大的时候就跳出递归,但是我们需要多次搜索,所以需要在选数的时候添加一个记录这个数选与没选的vis标记数组,其实dfs是有模板的,如下:void df...原创 2019-01-29 15:49:06 · 589 阅读 · 0 评论 -
整数划分问题——递归,dfs求解
1.问题描述:给定任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。当n = 7,共有14种拆分方法:2.算法分析:这道题目我们可以想到其实应该用递归来做,而dfs又是可以使用递归求解,我们首先可以在递归函数里进行拆分的枚举,需要拆分的数应该是能够由哪一些数相加,怎样设计递归函数dfs呢,我们应该清楚应该拆分n,比如n为7的时候,我们先拆了1,那么n还剩下6对吧,所以我们设计...原创 2019-02-25 19:32:05 · 634 阅读 · 0 评论 -
图的遍历——dfs OR bfs
1.什么是图的遍历?从图的某一个顶点出发,沿图中的路径依次访问图中的所有顶点,并且使得图中所有顶点都恰好被访问一次,这一过程即为图的遍历。注意:这里讨论的图特指连通图上进行遍历。2.图的遍历——dfs(深度优先搜索)简介:开始我们假设图上所有的顶点都未被访问,选择图中任一顶点,开始执行以下操作:1.访问当前顶点v,并将该顶点标记为已访问。2.遍历与顶点v相邻的所有顶点c,然后对顶点v所...原创 2019-04-30 20:00:27 · 416 阅读 · 0 评论