算法
文章平均质量分 61
无刺咸鱼
此人很懒,让你以为什么都没写
展开
-
求树的重心
树的重心树的重心:对于一棵树n个节点的无根树,找到一个点,将无根树变为以该点为根的有根树时,最大子树的结点数最小。重心的性质:1.树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,他们的距离和一样。2.把两棵树通过一条边相连,新的树的重心在原来两棵树重心的连线上。3.一棵树添加或者删除一个节点,树的重心最多只移动一条边的位置。4.一棵树最多有两个重心,且相邻。求解思路: 存储采用链式前向星来进行,核心是利用dfs的思想从一个选定的点遍历整个树,在开始回溯的时候记录每个点向下原创 2022-01-02 16:28:01 · 347 阅读 · 0 评论 -
HDOJ-2062 :Subset sequence(DP)
题目:求子集序列Consider the aggregate An= { 1, 2, …, n }. For example, A1={1}, A3={1,2,3}. A subset sequence is defined as a array of a non-empty subset. Sort all the subset sequece of An in lexicography order. Your task is to find the m-th one.Input:The input原创 2021-07-14 15:09:24 · 186 阅读 · 0 评论 -
找出最接近的相似串(DP思想)
题目:找出最接近的相似串假设从一个串变化成另一个串所允许的操作只有两种:插入一个字符或者删除一个字符。无论是插入还是删除一个符号,均算作一次操作。一般情况下,度量两个串S1和S2的相似性,可以通过从一个串变换成另一个串所需要的最少操作次数来衡量,需要的操作次数越少,则越相似。现给你一个串S,和一个串的集合T,让你找出集合T中与S最相似的串。测试输入:abcd4abdabdcabedaebcd预期输出:abdaebcd思想:这个题的实质就是求从一个字符串变为另一个字符串所需要的步骤数原创 2021-07-13 23:49:43 · 1003 阅读 · 0 评论 -
Dijkstra(迪杰斯特拉)算法简介
目录适用情形思想具体操作适用情形适用于权值为非负的图的单源最短路径思想在已知起点与终点的情况下。须有三个一维数组S,U,dis,S用于记录已经查找过的点,U则记录未查找到的点,dis用于记录从起点到各个点间的距离。开始时,S中仅有起点,U中则是其它所有点,dis[起点]初始化为0,dis中其它元素则为起点到各点的距离,如果没有路径则可以记录为INF(无穷大)或者-1。然后寻找与起点最近的点,将它加入数组S中,再更新dis的最短路径。然后再找与起点最近的点,将它加入数组S中,再更新dis的最短路径。知原创 2021-05-25 17:24:40 · 968 阅读 · 0 评论 -
弗洛伊德算法(Floyd)简介
弗洛伊德算法(Floyd)简介Floyd算法适用于解决求最短路径问题,相比于Digkstra算法思路更加简单,更容易理解,但是效率会明显低很多,可以作为初步学习的一种方法。目录弗洛伊德算法(Floyd)简介主要思想具体步骤具体例题主要思想主要的想法就是创建一个矩阵用于记录最短距离,如果需要求最短距离的路径的话则需要创建另外一个矩阵用于记录路径,矩阵中放置中介点即可。具体步骤1.在主函数中创建一个矩阵,存储输入的两点间的距离。2.在Floyd函数中,初始化记录最短距离的矩阵和记录中介点的矩阵。初原创 2021-05-18 22:02:51 · 4640 阅读 · 0 评论 -
快速排序法
相信很多同学已经学习过了选择法或者冒泡法排序,但是这两种排序方法的效率都太低了,因此这里介绍一种效率较高的方法——快速排序法。快速排序法属于一种著名的递归式问题解决方法——分而治之(divide and conquer,D&C)。使用D&C解决问题的过程包括两个步骤:1.找出基线条件,这种条件必须尽可能简单。2.不断将问题分解,直到符合基线条件。下面介绍快速排序法的步骤:1.从数组中选择一个元素,这个元素被称为基准值。2.找出一个比基准值大的元素,将它放到基准值的位置,这样重复原创 2021-03-12 15:29:22 · 82 阅读 · 0 评论