代码改变世界

实用算法实现-第 11 篇 贪心算法

2011-10-20 12:17  myjava2  阅读(184)  评论(0编辑  收藏  举报

11.1    Huffman编码

Huffman设计了一个可以用来构造一种称为Huffman编码的最优前缀码的贪心算法。

11.1.1   实例

PKU JudgeOnline, 1521, Entropy.

11.1.2   问题描述

给定一组ASCII码组成的字符串,求用Huffman编码该字符串所需的长度,及采用该编码带来的压缩比。

11.1.3   输入

AAAAABCD

THE_CAT_IN_THE_HAT

END

11.1.4   输出

6413 4.9

144 51 2.8

11.1.5   分析

采用贪心算法,使用最小堆就可以实现Huffman树的构建。为了便于计算每种字符对应的码的长度,用update()维护depth数组。如果需要求出每种字符对应的编码,只需要进一步增强update()函数即可。

注意:对于只有同一种字符的字符串要特殊处理。

11.1.6   程序


本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article