
天
華華355
这个作者很懒,什么都没留下…
展开
-
如何求关键路径
2.网中的关键路径并不唯一,对于有几条关键路径的网,值提高一条关键路径的关键活动速度不能缩短整个工程的工期,只要加快那些包括在所有关键路径上的关键活动才能达到效果。1.关键活动影响着整个工程的工期,可以通过缩短关键路径缩短工期,但不能任意缩短,否则关键路径会变为非关键路径。1.求事件vk的最早发生时间,如有多条边(多个活动)同时指向该事件,取max。4.活动的最晚开始时间就是弧终点指向事件的最晚发生时间-权值(活动时间)2.求事件vk的最晚发生时间,逆向求,若一个事件有多个出度,取min、原创 2024-11-19 22:01:38 · 282 阅读 · 0 评论 -
拓扑排序(核心代码)
思路:找到入度为0的顶点入栈,出栈时将这些顶点相邻的边“抹去”,即相邻的顶点入度-1,若变化后的顶点入度为0则入栈,当遍历完邻接点后,继续出栈,即输出新的点,并做相同的操作,直至栈内没有顶点;前提准备:先初始化入度表(indegree[]),和print输出表(初始为-1)若输出结点数少于总结点,则证明图中有环路。拓扑排序是对有向无环图(AOV)的排序。原创 2024-11-19 19:45:19 · 117 阅读 · 0 评论 -
最短路径问题
前期准备,初始化路径长度矩阵A,以及中转点记录矩阵path。原创 2024-11-18 19:43:54 · 174 阅读 · 0 评论 -
无向图能否被二分
【代码】无向图能否被二分P234。原创 2024-11-18 19:20:44 · 149 阅读 · 0 评论 -
判断一个无向图是否是一棵树
用深度优先搜索的基本方法,从一个顶点出发如果能访问所有的顶点,则是连通的,在深度优先搜索的过程中,记录边的个数(在邻接表中还有有邻接点未访问时,即两个点相连,边+1)思路:一个图连通且只有n-1个边,则是一棵树;原创 2024-11-16 20:25:51 · 219 阅读 · 0 评论 -
DFS深度优先搜索
图的邻接表表现方式不唯一,因此遍历序列不唯一;邻接矩阵表示方式唯一,因此深度优先遍历序列唯一的。从一个顶点尽可能深的搜索,该顶点的所有邻接点访问完后,返回上一层,继续深度搜索;最坏的空间复杂度是o(v),最好o(1);空间复杂度主要来自递归工作栈。将时间复杂度简化为:访问各节点所需要的时间+探索各边所需要的时间。和树的先序遍历类似,即尽可能“深”的搜索一个图;邻接表:时间复杂度o(|v|+|e|)邻接矩阵:时间复杂度:o(v^2)思路:用到栈(递归)原创 2024-11-16 19:34:02 · 127 阅读 · 0 评论 -
广度优先遍历
NextNeighbor(G,v,w):返回图G中除了w以外的顶点v的下一个邻接点;其中NextNeighbor(G,v,w)函数,若w是最后一个邻接点,则返回-1;FirstNeighbor(G,v):返回图G中顶点v的第一个邻接点;使用这两个函数来遍历顶点v的单链表;广度优先遍历类似于二叉树的层序遍历。对邻接表进行广度优先遍历。原创 2024-11-15 21:36:56 · 187 阅读 · 0 评论 -
图的两种存储
是指对图中的每个顶点vi建立一个单链表,第i个单链表的结点表示依附于顶点vi的边,每个单链表就称为顶点vi的边表,边表的头指针和顶点信息顺序存储,称为顶点表。邻接矩阵是用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息,存储顶点之间邻接关系的二维数组称为邻接矩阵。邻接表存储的是顶点与边的关系!原创 2024-11-13 21:28:13 · 139 阅读 · 0 评论 -
邻接矩阵求出度大于入度的点
等于顶点从i到j的长度为n的路径的数目。原创 2024-11-13 20:35:11 · 210 阅读 · 0 评论 -
用孩子兄弟表示法为存储结构的树的高度
遍历孩子兄弟法存储的二叉树,每一个结点在原本的树中的高度都等于孩子结点+1或兄弟结点最大的高度;如果没有左孩子则该结点没有孩子结点,即自己就是叶子结点。因此叶子结点数量=孩子子树叶子结点+兄弟子树叶子结点。求孩子兄弟表示法存储的树的叶子结点。从下往上依次“增加”高度。原创 2024-11-12 21:21:15 · 254 阅读 · 0 评论 -
读程序题2
在每个 case 标签的代码块结束处通常需要使用 break 语句来终止 switch 语句的执行。如果没有 break 语句,程序将会继续执行下一个 case 标签中的代码,直到遇到 break 语句或 switch 语句结束。在执行 switch 语句时,根据 switch 后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。原创 2024-11-12 20:40:13 · 216 阅读 · 0 评论 -
读程序题1
左移运算符:左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。a++表示取a的地址,把它的值装入寄存器,然后增加内存中的a的值;++a表示取a的地址,增加它的内容,然后把值放在寄存器中;转义字符可以表示特殊的意义,或者表示不容易表示的字符。\\表示反斜杠字符‘\’原创 2024-11-10 21:33:56 · 157 阅读 · 0 评论 -
线索二叉树
线索二叉树:n个结点的二叉树有n+1个空指针,利用这些空指针来存放指向前驱或后继的指针。原创 2024-11-10 20:40:05 · 306 阅读 · 0 评论 -
二叉树已知先序中序求后序
已知先序序列和中序序列,则可知先序序列的第一个元素是根节点,根据根节点在中序序列中的位置分为左右两个子树。先访问左子树,先序序列指针右移,指向的第一个元素是子树的根节点,通过中序序列将左子树再次分为左右子树,因此可以用递归的思想;先构建左子树,再构建右子树,从下往上依次建立树。当指针指向的先序序列元素=指针指向的中序序列元素;即该节点已经不存在左子树(中序序列中该元素的左边已经没有未访问的结点),则继续构建右子树;解题思路:根据先序序列和中序序列构建二叉树。右子树也为空,返回该结点(即插入到树中)原创 2024-11-10 17:35:22 · 729 阅读 · 0 评论 -
二叉树遍历
【代码】二叉树遍历。原创 2024-11-07 21:23:49 · 186 阅读 · 0 评论 -
KMP算法求next数组
一个字符的next数组是根据前面有多少个能匹配上决定的,所以必须是匹配上了才能移动i和j,同时确定了该字符的next。之后再检验该字符是否和模式串中/已经匹配上的字符串/的下一个字符(即此时的j指向的字符)/匹配,若匹配不上则i不能向前移动,也相当于模式串第j个字符串匹配失败,继续向前寻找能够匹配的位置,即j=next[j],一直向前查找到j=0为止。KMP优化,对next数组进行优化。原创 2024-11-03 22:16:06 · 235 阅读 · 0 评论 -
读程序题0(指针引用,析构函数)
指针是通过地址间接访问某个变量,而引用则是通过别名直接访问某个变量。析构顺序与构造顺序相反。原创 2024-11-03 19:39:48 · 118 阅读 · 0 评论