随笔分类 -  acm-哈弗曼

如何建立一棵哈夫曼树并且输出压缩码
摘要:算法:1、给定一个具有n个权值{ w1,w2,………wn }的结点的集合 F = { T1,T2,………Tn } 2、 初始时,设集合 A = F。 3、 执行 i = 1 至 n -1 的循环,在每次循环时执行以下操作 从当前集合中选取权值最小、次最小的两个结点,以这两个结点作为内部结点 bi 的左右儿子,bi 的权值为其左右儿子权值之和。 在集合中去除这两个权值最小、次最小的结点,并将内部结点bI 加入其中。这样,在集合A中,结点个数便减少了一个。 这样,在经过了n-1 次循环之后,集合A中只剩下了一个结点,这个结点就是根结点。哈夫曼树的存储:在哈夫曼树中,每个要编码的元素是一个叶结点(度 阅读全文

posted @ 2013-01-16 15:18 后端bug开发工程师 阅读(3055) 评论(0) 推荐(0)

HDU2527 Safe Or Unsafe(哈夫曼的一道简单题)
摘要:如果想进一步了解哈夫曼树的话链接为:http://www.cnblogs.com/jiangjing/archive/2013/01/16/2862828.html题意:就是给你一个字符串如:12 helloworld统计出其中d:1个,e:1个,h:1个,l:3个,o:2个,r:1个,w:1个,然后用一个数组保存起来a[7]={1,1,1,1,1,2,3};然后就是用哈夫曼树的思想求出新建的非叶子节点的权值之和:sum与12相比较如果sum小于等于12的话就输出yes否则输出no,此案例求出的sum=27;所以输出no。思路:按照建立哈夫曼树的思路每次求出两个的权值用min1保存最小的,m. 阅读全文

posted @ 2013-01-16 14:01 后端bug开发工程师 阅读(1522) 评论(0) 推荐(0)

导航