
算法
文章平均质量分 68
_Lance
编程爱好者
展开
-
如何证明平衡树可以通过左旋+右旋保持平衡?
注意事项:以下内容用到大量的代号,建议一边画图,一边推导假设,左子树高度为LH,右子树高度为RH,左孩子的左子树高度为LLH,左孩子的右子树高度为LRH,右孩子的左子树高度为RLH,右孩子的右子树高度为RRH,旋转后左子树高度为NLH,旋转后右子树高度为NRH1. LL与RR以LL情况为例,可知:LH = RH + 2LH = max(LLH, LRH) + 1 = LLH + 1RH = LLH - 1LRH + 1 <= LLH <= LRH + 2.原创 2021-09-28 17:40:26 · 301 阅读 · 0 评论 -
为什么KMP算法的预处理时间是Θ(m)?
《算法导论》P590已经描述过,但并没有细说,或者只是描述一个名词“摊还分析”,所以我按自己的理解重新描述COMPUTE-PREFIX-FUNCTION(P)m=P.lengthlet π[1..m] be a new arrayπ[1]=0k=0for q=2 to m while k>0 and P[k+1]!=P[q] k=π[k] if P[k+1]==P[原创 2016-07-23 23:04:42 · 1473 阅读 · 0 评论 -
装载问题
解算法:动态规划、贪心算法、回溯法都可以1,问题描述:有n个重量为w(i)的集装箱,要装入到两艘轮船A和B,轮船的载重量分别为W(1)和W(2),问:能否找到一组装载方案?2,涉及变量、定量:W(1):第一艘轮船的载重量(最大能装的重量)W(2):第二艘轮船的载重量A:第一艘轮船B:第二艘轮船w(i):第i个集装箱的重量n:集装箱的数量w:集装箱原创 2015-12-22 12:51:05 · 917 阅读 · 0 评论 -
BASIC-12 十六进制转八进制 (用java超时的原因)
以下是对于“BASIC-12 十六进制转八进制 (用java超时的原因)”的专题讲解问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式 输出n行,每行为输入对应原创 2016-01-04 14:26:41 · 807 阅读 · 1 评论 -
三杯水问题 算法分析、设计与实现(Java)
问题描述:有标注A、B、C的三个杯子,A、B、C杯的最大容量分别为8L、5L、3L,现有A杯中有水8L,请通过算法获取4L+4L水。 策略:(1) 选择实现的语言(这里以java为例)(2) 如果不知道算法该怎设计,可以先将必要的实体、边界找出,并抽象成类。(缩小所需考虑的内容)(3) 按“已知算法->递归->分治->贪心->回溯法->分支限界原创 2016-01-02 10:13:54 · 3756 阅读 · 0 评论 -
第K大数 算法分析、设计与实现(Java)
问题描述:有一个大小为n的数组A[0,1,2,…,n-1],求其中第k大的数。 策略:(1) 判断问题的性质,是排序型?最优型?其他?(2) 根据不同类型的问题挑选不同的算法。“已知算法->递归->分治->贪心->回溯法->分支限界法->动态规划->算法设计”(3) 根据相应的算法进行分析 目录0,分析输入输出...11,分析算法...原创 2016-01-02 12:00:09 · 2126 阅读 · 2 评论 -
棋盘覆盖 算法分析、设计与实现(Java)
该篇虽然与很多的博客、解说一样讲的都是棋盘覆盖的解法。但是,该篇更多地倾向于“证明”,这也是我与很多读者都想知道的,而不是开篇就上代码。 目录0,问题描述...11,相关博客...12,提出命题...13,命题证明...14,分析算法...25,代码实现...2 0,问题描述http://baike.baidu.com原创 2016-01-02 14:05:38 · 2804 阅读 · 0 评论 -
求多个数的最小公倍数
思路来源:解蓝桥杯练习题: 历届试题 核桃的数量 问题描述小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:1. 各组的核桃数量必须相同2. 各组内必须能平分核桃(当然是不能打碎的)3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式原创 2014-12-20 10:08:11 · 608 阅读 · 0 评论 -
离散数学之最优二元正则树的Java实现
需求描述:输入树叶数,输入树叶的权值,计算得最优二元正则树,并打印。用途:①快速计算最优二元正则树②可用于最优多元正则树的模板效果展示:说明:①如:"16(0)",其中16为节点的权值,0为层数,即根节点。②上述样例使用的是:“先根次序遍历”,中根遍历、后根遍历都可以从类TreeNodeConstants中找到相应的值③TreeN原创 2014-12-22 23:49:28 · 1727 阅读 · 0 评论 -
蓝桥杯练习: 算法训练 矩阵乘法
问题描述 输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。原创 2014-12-19 22:31:25 · 1542 阅读 · 1 评论 -
蓝桥杯练习: 算法训练 关联矩阵
问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵。输入格式 第一行两个整数n、m,表示图中结点和边的数目。n 接下来m行,每行两个整数a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。样例输入5 91 23 11 52 5原创 2014-12-19 22:38:35 · 900 阅读 · 0 评论 -
最优二元正则树 Java实现
需求分析:①输入树叶数②输入树叶权值③输出最优二元正则树的遍历效果展示:效果解说:例如:“16(0)”,其中16是节点的权值,0是节点的层数。0层代表根节点涉及类:①TreeNodeMananger : 根据树叶的权值或者树叶节点计算根节点,遍历树(先根,中根,后根)import java.math.BigDecimal;im原创 2014-12-23 08:21:45 · 1049 阅读 · 0 评论 -
hdu acm1005解题思路
注意,这里只提供思路。下面将进行数学分析,数学学渣退散。(基本公式)-----------------------------------------------------------------基本情况---------------------------------------------------------------------------2015年11月24原创 2015-11-24 20:34:02 · 1482 阅读 · 2 评论 -
1005. 继续(3n+1)猜想 (25)
1005. 继续(3n+1)猜想 (25)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。原创 2015-05-21 10:53:12 · 599 阅读 · 0 评论