概念 树的dfs遍历就是对于一个树上每个点root,它向下的多个分支,选择一个分支一直走下去,直至走完并 回溯 到root再走其他分支形成的遍历。 Code 求树的深度 每个节点x的深度用deep[x]表示。 代码只要在dfs向下搜索前deep[e[i].y]=deep[x]+1; 求子树大小 以x ...
分类:
其他好文 时间:
2018-05-30 21:27:40
阅读次数:
148
题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n =3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 给出 n 代表生成括号的对数,请你写出一个函数,使其能够 ...
分类:
其他好文 时间:
2018-05-26 18:51:12
阅读次数:
178
1、深度优先算法 遍历规则:不断地沿着顶点的深度方向遍历。顶点的深度方向是指它的邻接点方向。 最后得出的结果为:ABDECFHG。 Python代码实现的伪代码如下: 2、广度优先算法: 遍历规则: 1)先访问完当前顶点的所有邻接点。(应该看得出广度的意思) 2)先访问顶点的邻接点先于后访问顶点的邻 ...
分类:
编程语言 时间:
2018-05-25 23:36:24
阅读次数:
407
首先介绍一下回溯算法: 定义来自《百度百科》......名字着很高大上,实际上就是试探法,逐步试错找到最终的可行解。 重要的一点是解空间通常是在搜索可行解过程中动态产生的,所以程序中通常利用到递归的算法,如后面介绍的八皇后问题。这点区别与于前段时间所写的模拟退火算法,模拟退火是首先确定解空间,然后以 ...
分类:
其他好文 时间:
2018-05-22 19:08:43
阅读次数:
188
css实现 user select:none | text | all | element none:文本不能被选择 text:可以选择文本 all:当所有内容作为一个整体时可以被选择。如果双击或者在上下文上点击子元素,那么被选择的部分将是以该子元素向上回溯的最高祖先元素。 element:可以选择 ...
分类:
其他好文 时间:
2018-05-22 14:50:26
阅读次数:
206
一、基本概念 回溯法,又称为试探法,按 选优条件 向前不断搜索,以达到目标。但是当探索到某一步时,如果发现原先选择并不优或达不到目标,就会退回一步重新选择,这种达不到目的就退回再走的算法称为回溯法。 与穷举法的区别和联系: 相同点:它们都是基于试探的。 区别:穷举法要将一个解 ...
分类:
编程语言 时间:
2018-05-22 00:52:26
阅读次数:
268
回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为 ...
分类:
编程语言 时间:
2018-05-18 13:46:44
阅读次数:
177
思路: 一般类似于数独的题目都是使用回溯解决,这里由于题目数据较小同样可以直接DFS得出结果。这里我用了一个偷懒的方法(next_permutation),直接求出全排列,然后将位置一一对应。 // Asimple #include <bits/stdc++.h> #define debug(a) ...
分类:
其他好文 时间:
2018-05-16 13:07:53
阅读次数:
171
一、首先说一下分支限界法的思想: (1)比较:分支限界法和回朔法有相似之处,但是回朔法是搜索问题的所有解,采用深度优先搜索;而分支限界法是搜索问题的最优解,采用的是广度优先搜索; (2)核心思想:分支限界法中,每一个活节点都只有一次机会成为扩展节点。活节点一旦成为扩展节点,就一次性产生所有的儿子节点 ...
分类:
其他好文 时间:
2018-05-16 00:43:09
阅读次数:
250
正则表达式是一种工具,用于匹配和处理文本的字符串。正则表达式使用正则表达式语言来实现的。 它的优点是:功能强大,语言简洁。 缺点:不容易识读。 (本篇文章以Eclipse+Java来验证) 在Java中使用正则表达式,需要引入java.util.regex包中的三个类:Pattern类、Matche ...
分类:
其他好文 时间:
2018-05-14 17:34:18
阅读次数:
126