1. 分治法和动态规划的异同: 共同点: ? 将待求解的问题分解成若干子问题,先求解子问题,然后再从这些子问题的解得到原问题的解。 不同点: ? 1)适合于用动态规划法求解的问题,分解得到的各子问题往往不是相互独立的;而分治法中子问题相互 独立。 ? 2)动态规划法用表保存已求解过的子问题的解,再次 ...
分类:
编程语言 时间:
2020-05-03 14:23:55
阅读次数:
79
题目: 解法: 方法:深度优先搜索 首先我们知道一条路径的长度为该路径经过的节点数减一,所以求直径(即求路径长度的最大值)等效于求路径经过节点数的最大值减一。 而任意一条路径均可以被看作由某个节点为起点,从其左儿子和右儿子向下遍历的路径拼接得到。 如图我们可以知道路径 [9, 4, 2, 5, 7, ...
分类:
其他好文 时间:
2020-05-03 14:23:25
阅读次数:
58
题目: 解法: 广度优先遍历就好。 1 /* 2 // Definition for a Node. 3 class Node { 4 public: 5 int val; 6 vector<Node*> children; 7 8 Node() {} 9 10 Node(int _val) { 1 ...
分类:
其他好文 时间:
2020-05-03 13:02:57
阅读次数:
80
# coding:utf8 class Node(): def __init__(self, _item): self.item = _item self.left = None self.right = None class SortTree(): def __init__(self): self ...
分类:
编程语言 时间:
2020-05-02 15:21:01
阅读次数:
70
题目: 思路: 因为是无向图,构造的时候别忘了双向赋值,判断有无路径,可以利用全局变量数组visited,我通过深度优先搜索DFS,从起点i开始搜索,如果走过一个点,更改visited即可,结束搜索后,判断visited[j]是否为1,就可以判断i和j之间是否存在路径了。图的创建可以从函数题里复制粘 ...
分类:
其他好文 时间:
2020-04-29 20:13:52
阅读次数:
256
1. 树(深度优先搜索树) 上图右图是左图以 为起点进行 时产生的生成树。 有向图的 生成树主要有 种边(不一定全部出现): 1. 树边( ):绿色边,每次搜索找到一个还 没有访问过的结点 ( 白点 )的时候就形成了一条树边。 2. 返祖边( ):黄色边,也被叫做回边,即 指向祖先 结点( 灰点 ) ...
分类:
其他好文 时间:
2020-04-29 15:04:19
阅读次数:
69
深度优先搜索的思想是思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底。 即:往深处走。 例:从这个图中,深度优先搜索的顺序就是1->2->3->2->4->2->1->5->1->6->7->8->7->6->1->9->10 代 ...
分类:
其他好文 时间:
2020-04-25 23:45:21
阅读次数:
64
什么是回溯 在求解诸如八皇后、全排列等问题时,我们通常使用深度优先搜索dfs在解空间内搜索满足条件的解,dfs的搜索过程可以看做是在一棵搜索树上遍历的过程。例如,求数字[1,2,3]的全排列的搜索树如下: 当我们搜索到树的深层向浅层返回的过程就是回溯。 (我认为可以这样理解:从上往下搜索是递归,从下 ...
分类:
编程语言 时间:
2020-04-25 23:13:57
阅读次数:
105
二叉树 二叉树的性质 每个节点最多都有两个子节点的树称为二叉树。其性质与定义有: 第$i$层最多有$2^{i 1}$个节点 满二叉树:若每一层的节点数都是满的(都为$2^{i 1}$),则为满二叉树 完全二叉树:一棵满二叉树只在最后一层有缺失,则称为完全二叉树 而对于完全二叉树,它的子节点与父结点还 ...
分类:
其他好文 时间:
2020-04-23 15:06:58
阅读次数:
51
饭前点心: DFS序,闻名知意就知道这是个跟 DFS 相关的东东,通俗一点说就是 DFS 的序列。 如果您 DFS 不太懂的话,建议先去搞几道走迷宫的题目练练手。 什么是DFS序? 如你当前看到的这幅图,如果我们按照 DFS(深度优先搜索)走这棵树时, 路径就是我们 绿色 所代表的路径。 即我们这个 ...
分类:
其他好文 时间:
2020-04-22 20:21:02
阅读次数:
83