2018年6月29日
摘要:
B+树是B树的变形,代码已通过内存泄漏测试和正确性测试。直接给代码吧。 对应的成员函数 不明白的,好好复习B树吧。
阅读全文
posted @ 2018-06-29 14:20
dalgleish
阅读(211)
推荐(0)
2018年6月27日
摘要:
插入原理参考《算法导论》,删除原理请参考以下链接:https://www.youtube.com/watch?v=fKubKYzwDl0 代码实现如下 声明一个B树类,随机生成对应关键字的数据data 对应的成员函数实现 Insert函数,原理来自《算法导论》 两个辅助函数 Search函数,查找某
阅读全文
posted @ 2018-06-27 09:39
dalgleish
阅读(268)
推荐(0)
2018年6月15日
摘要:
原理参考《算法导论》,我借用了stl中的deque类,这样方便构造书中说的有序队列Q。其次,本博客的所有代码都采用C和C++混编形式,所以建议使用VS2015及其以上版本编译代码。 代码如下 声明一个Huffman类以及对应的节点数据 对应的成员函数实现 Huffman_init成员函数,构建Huf
阅读全文
posted @ 2018-06-15 13:27
dalgleish
阅读(190)
推荐(0)
2018年6月14日
摘要:
在说01背包问题前,简单的说下部分背包的问题。 部分背包的问题,有N个可分割的物品,每个物品对应重量Wi, 价值Vi(i从1到N)。给定总重量C,如何保证最大价值? 01背包问题,和部分背包问题唯一不同的是,01背包问题要求物品i,要么全部拿走,要么不拿走。而对应的部分背包问题,则可以拿一小部分物品
阅读全文
posted @ 2018-06-14 16:25
dalgleish
阅读(799)
推荐(0)
2018年6月11日
摘要:
问题描述:有N个活动,活动i的开始时间为Si,结束时间为fi。那么如何在N个活动之间,找出活动时间不冲突的活动组合呢? 原理参考《算法导论》。 代码如下: 常规的activity_selector函数 贪心下的greedy_activity_selector函数 数据录入 Main函数 测试结果图(
阅读全文
posted @ 2018-06-11 14:06
dalgleish
阅读(320)
推荐(0)
2018年6月4日
摘要:
原理来自于《算法导论》,其实和矩阵的动态规划基本一样,所以这里就不作阐述了。 直接上代码,通过构造了最优的root数组后,很容易再创建一个二叉树(这一小部分大家可以自己理解后试试)。 关于代码的说明,因为书上给出的是伪代码,数组并没有采用C语言格式,下标不是从0开始,所以算法和root数组我做了调整
阅读全文
posted @ 2018-06-04 15:26
dalgleish
阅读(3498)
推荐(0)
摘要:
原理请参考《算法导论》 定义常量 版本1,带辅助数组b 对应输出函数 版本2,不带辅助数组b 对应输出函数 最后,打印所有可能函数 Main函数 辅助函数 打印结果: 所有代码均经过测试,结果正确。
阅读全文
posted @ 2018-06-04 05:26
dalgleish
阅读(188)
推荐(0)
2018年5月28日
摘要:
算法原理请参考《算法导论》,因为算法这东西千篇一律,关键还是实现和理解,这里只提几个关键点,帮助大家理解。 1. 为什么需要动态规划? 比如矩阵A是p x q大小,矩阵B是q x r大小,很明显,得到的矩阵C是p x r大小,其中花费的时间必定是p*q*r。这只是两个矩阵,如果存在N个矩阵需要算其乘
阅读全文
posted @ 2018-05-28 14:51
dalgleish
阅读(1606)
推荐(0)
摘要:
《算法导论》给出了详细的描述,这里归纳下。 算法原理:任意一条装配线中的装配站j的最快路径,都是来自于任意一条装配线中的装配站j-1。 采用算法导论中,给出的图以及数据,如下: 由于采用C语言数组,装配线下标是0或者1,装配站下表是0,1,2,3,4,5,上面的l1和l2数组分别翻译成0 1 0 0
阅读全文
posted @ 2018-05-28 04:48
dalgleish
阅读(688)
推荐(0)
2018年5月26日
摘要:
《算法导论》描述了一个关于区间树的重叠搜索,这里简单描述下原理,然后给出代码。 区间树是建立在红黑树的基础上,额外维护了一个信息域。在《算法导论》中,已经给出了任何额外信息域的维护,是相似的证明。所以,建议不懂得,先试着实现一个基本的,带size域的红黑树(书上已经给出原理),然后再扩展到区间树。下
阅读全文
posted @ 2018-05-26 13:22
dalgleish
阅读(1441)
推荐(0)