2018年6月11日
摘要:
问题描述:有N个活动,活动i的开始时间为Si,结束时间为fi。那么如何在N个活动之间,找出活动时间不冲突的活动组合呢? 原理参考《算法导论》。 代码如下: 常规的activity_selector函数 贪心下的greedy_activity_selector函数 数据录入 Main函数 测试结果图(
阅读全文
posted @ 2018-06-11 14:06
dalgleish
阅读(318)
推荐(0)
2018年6月4日
摘要:
原理来自于《算法导论》,其实和矩阵的动态规划基本一样,所以这里就不作阐述了。 直接上代码,通过构造了最优的root数组后,很容易再创建一个二叉树(这一小部分大家可以自己理解后试试)。 关于代码的说明,因为书上给出的是伪代码,数组并没有采用C语言格式,下标不是从0开始,所以算法和root数组我做了调整
阅读全文
posted @ 2018-06-04 15:26
dalgleish
阅读(3475)
推荐(0)
摘要:
原理请参考《算法导论》 定义常量 版本1,带辅助数组b 对应输出函数 版本2,不带辅助数组b 对应输出函数 最后,打印所有可能函数 Main函数 辅助函数 打印结果: 所有代码均经过测试,结果正确。
阅读全文
posted @ 2018-06-04 05:26
dalgleish
阅读(187)
推荐(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
阅读(1598)
推荐(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
阅读(684)
推荐(0)
2018年5月26日
摘要:
《算法导论》描述了一个关于区间树的重叠搜索,这里简单描述下原理,然后给出代码。 区间树是建立在红黑树的基础上,额外维护了一个信息域。在《算法导论》中,已经给出了任何额外信息域的维护,是相似的证明。所以,建议不懂得,先试着实现一个基本的,带size域的红黑树(书上已经给出原理),然后再扩展到区间树。下
阅读全文
posted @ 2018-05-26 13:22
dalgleish
阅读(1427)
推荐(0)
2018年5月22日
摘要:
Treap树包含所有二叉树的性质,但是以一个随机的优先值排序。《算法导论》关于这个Treap树的原理和实现描述非常少,我就直接给代码吧,原理大家自己百度了。 首先定义的个类 关于各个成员实现 left_roate函数 right_rotate函数 tp_insert函数 tp_insert_fixu
阅读全文
posted @ 2018-05-22 12:07
dalgleish
阅读(197)
推荐(0)
2018年5月12日
摘要:
算法原理请参考《算法导论》,简单描述下:就是所有节点(根节点除外)的最大深度和最小深度之间的差小于2。 代码实现,只贴出和红黑树不同的类成员函数实现,其余都是和红黑树一样。 类声明 和红黑树不同的类成员函数实现 avl_insert成员函数 avl_delete成员函数 avl_fixup成员函数,
阅读全文
posted @ 2018-05-12 16:21
dalgleish
阅读(161)
推荐(0)
2018年5月5日
摘要:
原理请参考《算法导论》 定义一个红黑树类 相关成员函数的实现 left_rotate成员函数,实现某节点的左旋转 right_rotate成员函数,实现某节点的右旋转 rb_insert成员函数,将某个key值插入到红黑树中,并修正让其满足红黑树的性质 rb_insert_fixup成员函数,接上面
阅读全文
posted @ 2018-05-05 15:20
dalgleish
阅读(173)
推荐(0)
2018年5月3日
摘要:
原理参考《算法导论》 注:代码设定,支持索引的位数最大是32位,当然可以修改让其支持64和32位的索引 首先定义一些常量(修改此处的常量,让其支持64位的索引) 然后定义一个基数树类 关于类成员实现 radix_mask成员负责根据所在树的层数,动态生成掩码。比如本例中使用18位的索引值,然后定义树
阅读全文
posted @ 2018-05-03 02:41
dalgleish
阅读(272)
推荐(0)