数据结构实现
吉大菜鸡
吉林大学2019级本科生
展开
-
DP算法:树的最大乘积路径
一、思路:本题大致有两个思路 1、在先序遍历时使用全局变量max,front,rear来记录最大值和路径的头尾,先序遍历所有的子树,时间复杂度o(v^2)(将以所有结点为根节点的子树全部遍历一遍)复杂度太高在这里不提供代码 2、将经典问题“最大子数组成乘积”移植到二叉树上 二、动态规划 状态:保存历史信息的量 状态转移函数:通过某几个历史信息确定当前状态的递推关系式 1、状态的无后效性: 当前状态记录历史信息,一旦当前状态确定,就不会再改变,且未来的决策只能再已有的一个或若干个基础上进行,历史信息只能通过.原创 2020-11-30 13:38:50 · 1192 阅读 · 2 评论 -
关于图的结点最短路径的三种经典算法
dijkstra算法 适用条件:正权单源最短路径 松弛方法:每次取距离最小的点对后续结点进行松弛,这个点无法再被松弛,因为在没有负权的情况下,无法通过后面权值更大的结点优化路径长度 思路:循环执行以下两步v次 1、取图中距离源点距离最短的点 2、用取出的点对后续未取出的结点作路径松弛 时间复杂度:o(V^2+E):取v个点对后续结点作松弛操作,每次遍历v个点取最小值,所有的E个边都被考虑松弛过 数据结构:邻接表或邻接矩阵(样例中数据不过万的情况下才能用) #include<st...原创 2020-11-27 11:38:46 · 2272 阅读 · 0 评论 -
并查集(用于给信息划分等价类)例题实现
使用father数组,为根时存放权值的相反数(为了区分成员的根),不为根时存放father,f区分根和非根:father为正或者为负 makeset:获得n颗树,权值 find:寻找成员根结点,如果该成员不是根(避免误伤权值)就并将成员链接到根节点上 union:比较权值,将权值小的链接到权值大的上面去,维护权值 下面用一道例题来展现并查集的makeset,find,union和寻找两个元素是否在同一个等价类中的基本实现 有n台计算机,编号为1到n。设定如果计算机a和计算机b原创 2020-11-21 11:18:49 · 500 阅读 · 1 评论