Leetcode
文章平均质量分 63
idealzouhu
这个作者很懒,什么都没留下…
展开
-
约瑟夫环问题
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人开始重新从1报数,报到m时停止并且报m的人出列。如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,对任意给定的m和n,求出出列编号序列。二、实现思路 本程序采用顺序表来实现约瑟夫环问题,求出出列编号序列。顺序表的结构体类型中含有data[M原创 2021-04-21 14:52:43 · 394 阅读 · 0 评论 -
输出给定文本的字符哈夫曼编码(基于树的二叉链存储结构)
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述给定一段文本,构造一棵哈夫曼树,给出文本中每个字符或词的编码。二、实现思路在该程序中,首先通过Frequency()函数来分析输入文本中的字符数量以及其出现的次数,并将其次数作为权值。将文本信息存放到数组str中,数组的下标对应英文字母在英文字母表中的顺序,数组元素的值对应字母出现的次数。每当出现英文字母,就将其值加1.当扫描完文本后,将数组元素值不为0的数组元素转换为哈弗曼树的结点。当生成哈弗曼树的结点后,调用函数CreateHT原创 2021-04-21 14:12:36 · 1772 阅读 · 0 评论 -
蓝桥练习题(C++)——门派制作
我原创 2021-03-31 17:42:21 · 118 阅读 · 0 评论 -
二分查找算法例题
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 对于给定11个数据元素的有序表:(2,3,10,15,20,25,28,29,30,35,40),若查找给定值为20的元素,将依次与表中哪些元素比较?若查找给定值为26的元素,将依次与哪些元素比较?假设查找表中每个元素的概率相同,求查找成功时的平均查找长度和查找不成功时的平均查找长度。二、实现思路 对于给定11个数据元素的有序表:(2,3,10,15,20,25,28,29,30,35,40),采用二分查找,若查找给定值为20的原创 2021-04-21 14:32:29 · 5521 阅读 · 0 评论 -
表达式求值问题
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果。二、实现思路 在基于顺序栈实现表达式求值中,该算法主要分为将算术表达式转换成后缀表达式和后缀表达式求值两个步骤。 &emsp将算术表达式转换为后缀表达式的主要思路为:在从左到右扫描算术表达式exp的一个运算符op时,如果栈为空或者栈顶为’(‘,直接将其进栈;如果栈不空,只有当op的优先级高于栈顶运算符的优先级时才直接原创 2021-04-21 15:12:55 · 1901 阅读 · 0 评论 -
整数集合划分且满足|n1-n2|最小且|S1-S2|最大
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 已知由n(n≥2)个正整数构成的集合A={ak}(0≤k<n),将其划分为两个不相交的子集A1和A2,元素个数分别是n1和n2, A1和A2中元素之和分别为S1和S2。设计一个尽可能高效的划分算法,满足|n1-n2|最小且|S1-S2|最大。二、实现思路 在划分算法中,集合A的元素都为正整数,则只需要找到中位数,以中位数为界,将小于中位数的部分归为一个集合,大于等于中位数包括中位数在内的归为另外一个集合。此时,|n1-n2原创 2021-04-21 14:24:58 · 4122 阅读 · 2 评论 -
堆排序例题
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 假设有1000个整数,计算机由于硬件限制每次只能加载50个整数,试设计一种尽可能高效的算法,求出前50大的整数。二、实现思路 由于硬件限制每次只能加载50个数,并且求出前50大的整数,则采用堆排序并且是小根堆。按照题意可以建一个50个节点的小根堆,还剩950个节点,每个节点依次与小根堆根节点比较,若大于根节点值则替换根节点,再调整成小顶堆,比较完所有节点,堆中即为50个最大元素,然后采用堆排序,则可堆中的元素按照从大到小的顺序输原创 2021-04-21 14:39:45 · 1165 阅读 · 0 评论 -
一元多项式求和
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果。二、实现思路 一元多项式可以用单链表表示,结点结构图示如下: 一元多项式算法伪代码如下: 实现一元多项式求和应采用单链表结果实现。一元多项式采用链式存储结构,相对顺序存储来说,可以节约存储空间。其中,一个结点表示一元多项式的某一项。单链表结点里有变量coef、exp、next,分别表示多项式中某一项的系数、指数、下一结点地址。在程原创 2021-04-21 15:04:30 · 3430 阅读 · 0 评论 -
基于栈实现表达式求值问题(C++)
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述基于栈实现表达式求值问题,输入一个简单表达式,输出表达式的结果二、实现思路在基于顺序栈实现表达式求值中,该算法主要分为将算术表达式转换成后缀表达式和后缀表达式求值两个步骤。将算术表达式转换为后缀表达式的主要思路为:在从左到右扫描算术表达式exp的一个运算符op时,如果栈为空或者栈顶为’(‘,直接将其进栈;如果栈不空,只有当op的优先级高于栈顶运算符的优先级时才直接将op进栈;否则依次出栈运算符并存人后缀表达式postexp。直原创 2021-04-09 23:56:56 · 2414 阅读 · 0 评论 -
KMP算法实现(C++)
目录一、问题描述二、实现思路三、程序代码四、运行结果一、问题描述 实现KMP算法二、实现思路在KMP算法中,首先分析模式串t从中提取出加速匹配的有用信息next数组,紧接着利用计算好的模式串的next数组进行模式匹配。其中,next数组有效地消除了主串指针的回溯,提高算法效率第一部分,对模式串预处理,生成next数组。next数组的求解过程如下:(1)置next[0]=-1,next[1]=0。(2)如果next[j]=k,表示有”t0t0…tk-1”=”tj-k-tj-k+1…tj-I原创 2021-04-21 14:01:41 · 1581 阅读 · 0 评论 -
最小生成树算法例题
目录一、问题描述二、实现思路三、解题代码四、运行结果一、问题描述 对于下图,试分别采用Prim和Kruskal算法求出其最小生成树。二、实现思路 最小生成树是由n个顶点,n-1条边,将一个连通图连接起来,且使权值最小的结构。最小生成树可以用Prim算法或Kruskal算法求出。Prim算法又称“加点法”,用于边数较多的带权无向连通图。其方法主要是每次找与之连线权值最小的顶点,将该点加入最小生成树集合中,但是不允许出现闭合回路的情况。Kruskal算法又称“加边法”,用于边数较少的稀疏图,其方原创 2021-04-21 14:47:05 · 1437 阅读 · 0 评论 -
Leetcode刷题—— 种花问题
Leetcode刷题—— 种花问题原创 2023-12-12 10:44:36 · 428 阅读 · 0 评论