之前刷leetcode的时候,知道求排列组合都需要深度优先搜索(DFS), 那么前序、中序、后序遍历是什么鬼,一直傻傻的分不清楚。直到后来才知道,原来它们只是DFS的三种不同策略。N = Node(节点)L = Left(左节点)R = Right(右节点)在深度优先搜索的时候,以Node的访问顺序... ...
分类:
其他好文 时间:
2020-01-29 12:53:37
阅读次数:
108
链接: "LeetCode652" 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 相关标签: 深度优先搜索 深度优先搜索加哈希表。由于在寻找重复子树过程中,我们需要记住每一步的结果,并且最终记录是 ...
分类:
其他好文 时间:
2020-01-28 22:55:04
阅读次数:
54
深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法。(不撞南墙不回头) DFS一般用递归来实现,其伪代码思路过程一般如下: void DFS(必要的参数){ if (符和遍历到一条完整路径的尾部){ 更新某个全局变量的值 } if (跳出循环的临界条件){ return; } 对所有可能出现 ...
分类:
其他好文 时间:
2020-01-27 19:07:35
阅读次数:
99
ZOJ1002 —— Fire net Time Limit: 2000 ms Memory Limit: 65536 KB Suppose that we have a square city with straight streets. A map of a city is a square b ...
分类:
其他好文 时间:
2020-01-27 14:00:53
阅读次数:
112
题意:公司分配N项工作给N个员工,每个员工只能被分给1项工作,每个人处理工作的时间不同。求完成所有工作所需的最少时间。 输入:第一行输入整数N,代表N个员工,员工编号从1到N(1<=N<=10) 接下来输入一个N*N的二维矩阵task[N][N],其中task[i][j](0<=task[i][j] ...
分类:
其他好文 时间:
2020-01-26 22:36:07
阅读次数:
80
一、什么是面向对象的继承 官方的说法:是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新 ...
分类:
其他好文 时间:
2020-01-25 18:12:42
阅读次数:
62
给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入格式 第一行包含整数n,表示树的结点数。 接下 ...
分类:
其他好文 时间:
2020-01-25 17:00:27
阅读次数:
80
题目链接:http://bailian.openjudge.cn/practice/1321?lang=en_US 题意: 求在一个n*n的矩阵内棋盘内摆放k个棋子的方案,这些棋子不在同一行不在同一列去 思路:可以通过深度优先搜索去搜寻每一行棋子与其他棋子摆放的可能方法数。 代码如下: #inclu ...
分类:
其他好文 时间:
2020-01-23 12:30:50
阅读次数:
88
1. 几个经典算法题 字符串匹配 KMP算法(部分匹配表) 汉诺塔 分治算法 八皇后 回溯算法 马踏棋盘(骑士周游) 图的深度优先遍历算法(DFS) + 贪心算法优化 2. 数据结构和算法的关系 2.1 数据结构 解决存储问题 把现实生活中大量而复杂的问题以特定的数据类型(事物)和特定的存储结构(事 ...
分类:
其他好文 时间:
2020-01-19 16:33:43
阅读次数:
98
深度优先搜索 基本原理: 从一个状态开始不断转移,直至无法转移,然后退回前一步的状态,继续转移到其他状态,知道求解 基本思想:递归 例一: 给定整数a1,a2,a3......an,判断是否可以从中选出若干数,使们的和恰好为K; ...
分类:
其他好文 时间:
2020-01-17 13:35:47
阅读次数:
71