06 2018 档案
B树
摘要:插入原理参考《算法导论》,删除原理请参考以下链接:https://www.youtube.com/watch?v=fKubKYzwDl0 代码实现如下 声明一个B树类,随机生成对应关键字的数据data 对应的成员函数实现 Insert函数,原理来自《算法导论》 两个辅助函数 Search函数,查找某
阅读全文
不定长哈夫曼树
摘要:原理参考《算法导论》,我借用了stl中的deque类,这样方便构造书中说的有序队列Q。其次,本博客的所有代码都采用C和C++混编形式,所以建议使用VS2015及其以上版本编译代码。 代码如下 声明一个Huffman类以及对应的节点数据 对应的成员函数实现 Huffman_init成员函数,构建Huf
阅读全文
动态规划之01背包问题
摘要:在说01背包问题前,简单的说下部分背包的问题。 部分背包的问题,有N个可分割的物品,每个物品对应重量Wi, 价值Vi(i从1到N)。给定总重量C,如何保证最大价值? 01背包问题,和部分背包问题唯一不同的是,01背包问题要求物品i,要么全部拿走,要么不拿走。而对应的部分背包问题,则可以拿一小部分物品
阅读全文
贪心算法之活动规划
摘要:问题描述:有N个活动,活动i的开始时间为Si,结束时间为fi。那么如何在N个活动之间,找出活动时间不冲突的活动组合呢? 原理参考《算法导论》。 代码如下: 常规的activity_selector函数 贪心下的greedy_activity_selector函数 数据录入 Main函数 测试结果图(
阅读全文
动态规划之最优二叉树
摘要:原理来自于《算法导论》,其实和矩阵的动态规划基本一样,所以这里就不作阐述了。 直接上代码,通过构造了最优的root数组后,很容易再创建一个二叉树(这一小部分大家可以自己理解后试试)。 关于代码的说明,因为书上给出的是伪代码,数组并没有采用C语言格式,下标不是从0开始,所以算法和root数组我做了调整
阅读全文
动态规划之最长公共子序列
摘要:原理请参考《算法导论》 定义常量 版本1,带辅助数组b 对应输出函数 版本2,不带辅助数组b 对应输出函数 最后,打印所有可能函数 Main函数 辅助函数 打印结果: 所有代码均经过测试,结果正确。
阅读全文