哈夫曼树
Fallen_Angel001
这个作者很懒,什么都没留下…
展开
-
【SSLGZ 1407】(树)哈夫曼树(一)
问题描述 给出数据,构建哈夫曼树。(按中序遍历输出) 样例输入 8 7 19 2 6 32 3 21 10 样例输出 19:00 21:01 2:10000 3:10001 6:1001 7:1010 10:1011 32:11 算法讨论 将构建哈夫曼树的模板敲上去就能对了。如何构建哈夫曼树?先将数据从小到大排序,将每个数据当做一棵子树,将最小的两个合并成原创 2016-12-23 19:51:00 · 341 阅读 · 0 评论 -
【SSLGZ 1408】(树)哈夫曼树(二)
问题描述 从a开始的n个字母分别表示n个结点,分别代n个权值,以它们为叶子结点构造一棵哈夫曼树(若两节点权值相等,按照字典排序构造),最后求该哈夫曼树路径长。 样例输入 7 a b c d e f g 3 7 8 2 5 8 4 样例输出 a:1101 b:111 c:00 d:1100 e:101 f:01 g:100 100 算法讨论 主要还是构造哈原创 2016-12-23 20:03:51 · 326 阅读 · 0 评论 -
【SSLGZ 1409】(树)哈夫曼树(三)
问题描述 根据传送的一串字符出现的频率,设置其相应的哈夫曼编码。 样例输入 XINNNMM 样例输出 N:0 M:10 X:110 I:111 算法讨论 统计字符串每个字母的频率,构建哈弗曼树,注意当两权值相同时不按字典序排序,按在字符串中出现的顺序排序,最好将对应字母存储起来,不然输出很麻烦,还有可能会错。const maxn=200; var a:array[0..m原创 2016-12-24 10:28:51 · 381 阅读 · 0 评论 -
【SSLGZ 1040】合并果子
问题描述 有n堆果子,现要将n堆果子合并成一堆,每次合并要的体力为两堆果子的值。现要求用最小体力合并果子。 输入 3 1 2 9 输出 15 算法讨论 因为要求每次合并的体力最小,那我们可以将它排序,但数据过大会超时,所以我们可以构建哈夫曼树,每次构建插入后再用堆排序维护就好。const maxn=10000; var a:array[1..maxn] of longint;原创 2017-02-23 16:54:19 · 332 阅读 · 0 评论