c++数据结构与算法
文章平均质量分 93
detecting……
小白要努力
展开
-
一维装箱问题
Bin Packing Problem一、 问题描述二、 算法介绍及实现注:(1)以下的文字表达中,桶 == 箱子, 空间 == 容量;(2)每个算法对应的程序默认读取所有测试文件并计算结果与耗时;(一) 直接法按照给定物品的顺序,判断当前桶能否装下当前物品,如果不能,则新开一个桶并将物品放入该桶中,接着便从该桶开始判断能否装下下一个物品(不再回头看前面的桶)。这个算法是最简单也是最快的方法,但基本上对问题没有什么优化,效果不佳。时间复杂度:O(n)代码实现://算法一 #in原创 2021-02-17 17:19:14 · 5312 阅读 · 3 评论 -
c++ 构建哈夫曼树
简介哈夫曼树是一种用来对字符进行编码的数据结构,可以根据字符的使用频率来决定字符的二进制表示,使得转化后的二进制序列尽可能短。哈夫曼树的具体介绍见此博客用漫画介绍哈弗曼树接下来介绍哈夫曼树的构造方法,假设给定n个字符及其对应的频率(出现次数),求出用哈夫曼编码后编码串的长度。比如:4 //字符个数a 1b 2c 3d 4会返回19。(如果不知道怎么算请看上面链接的博客)c++构造方法一首先可以想到用优先队列,将包含频率信息的节点加入队列,然后每次从队列中拿出两个最小的节点a和b,原创 2020-05-08 18:55:09 · 2227 阅读 · 0 评论 -
c++之复杂类型作为unordered_map的键值
unordered_map & unordered_set我们知道c++中有unordered_map和unordered_set这两个数据结构,其内部实现是哈希表,这就要求作为键值的类型必须是可哈希的,比如常见的数据类型int、string等。但在很多应用中我们可能需要用到比较复杂的类型作为键值,比如vector<int>、pair<int,int>,乃至自定义...原创 2020-04-26 20:16:42 · 6104 阅读 · 3 评论