题目看了半小时才看懂的。 题意:首先根据给出的序列,构造出哈夫曼树,构造出来的是一棵二叉树,每个节点都有一个权值,每个节点的两个儿子只能取一个,问能否使取出来的节点权值之和刚好等于e。 这样一分析就很容易看出是01背包。但是,背包容量特别大!不能纯粹的用循环做背包肯定会超时。可以使用两个队列存能够凑 ...
分类:
其他好文 时间:
2016-04-11 20:40:09
阅读次数:
163
1.构造哈夫曼树的方法 对于已知的一组叶子的权值W 1 ,W 2...... ,W n ①首先把 n 个叶子结点看做 n 棵树(仅有一个结点的二叉树),把它们看做一个森林。 ②在森林中把权值最小和次小的两棵树合并成一棵树,该树根结点的权值是两棵子树权值之和。这时森林中还有 n-1 棵树。 ③重复第② ...
分类:
其他好文 时间:
2016-04-06 21:28:42
阅读次数:
162
一.堆(heap) 优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 数组 : 插入 — 元素总是插入尾部 ~ O ( 1 ) 删除 — 查找最大(或最小)关键字 ~ O ( n ) 从数组中删去需要移动元素 ~ ...
分类:
其他好文 时间:
2016-04-04 18:01:53
阅读次数:
267
1. 递归函数最终会结束,源于有一个分支不调用函数自身。 2. 多线程的作用是提高CPU利用率,因此IO密集型操作效率的提高不能通过使用多线程实现。 3. 有一些编程题目考体力活,要把握住。 4. hanoi(汉诺)塔公式:2的n次方减1。 5. 递归与分区处理优先顺序无关。 6. 哈夫曼树必为奇数 ...
分类:
其他好文 时间:
2016-04-02 02:00:10
阅读次数:
264
上篇描述了哈夫曼编码问题的基本描述以及建造一个哈夫曼树的过程分析,那么当算法已经描述清楚之后,我们要怎么样来实现
代码呢?或者说,给你一些带有权值的叶子节点,要怎么样利用程序快速算出所对应的哈夫曼树的带权路径WPL呢?
我们首先回顾一下上篇讲到的那个问题:
例如有这一个字符串“good
good study day day up”,现在我们要对字符串进行哈夫曼编码,该字符串一共有 26 ...
分类:
其他好文 时间:
2016-03-31 11:04:24
阅读次数:
203
参考自:http://blog.csdn.net/jdhanhua/article/details/6621026 哈夫曼树 哈夫曼树(霍夫曼树)又称为最优树. 1、路径和路径长度在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数
分类:
编程语言 时间:
2016-03-11 17:00:29
阅读次数:
241
定义:给定n个带有权值的叶节点,将其组成一颗带权路径长度最小的二叉树,则该二叉树为哈夫曼树,亦称最优二叉树 假设叶节点的权值分别为w1, w2, w3 ... wn,到根节点的路径长度分别为l1, l2, l3 ... ln, 那么WPL = w1 * l1 + w2 * l2 + w3 * l3
分类:
其他好文 时间:
2016-02-18 19:41:43
阅读次数:
143
1 #include "stdio.h" 2 #include "malloc.h" 3 4 #define maxlen 100 5 #define infinity 65535 6 7 struct bnode 8 { 9 int data;//数据 10 ...
分类:
其他好文 时间:
2015-12-31 19:05:14
阅读次数:
474
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2527用优先队列模拟#include#include#include#include#includeusing namespace std;#define N 1100#define met(a, b) ...
分类:
其他好文 时间:
2015-12-29 14:16:09
阅读次数:
125