15. 计算WPL
来源:互联网 发布:windows程序设计如何 编辑:程序博客网 时间:2024/05/20 20:46
15. 计算WPL
成绩10开启时间2014年11月26日 Wednesday 17:25折扣0.8折扣时间2014年12月7日 Sunday 23:55允许迟交否关闭时间2014年12月14日 Sunday 23:55
Huffman编码是通信系统中常用的一种不等长编码,它的特点是:能够使编码之后的电文长度最短。
输入:
第一行为要编码的符号数量n
第二行~第n+1行为每个符号出现的频率
输出:
对应哈夫曼树的带权路径长度WPL
- 5↵
- 7↵
- 5↵
- 2↵
- 4↵
- 9↵
- WPL=60↵
- 5↵
- 2↵
- 4↵
- 2↵
- 3↵
- 3↵
- WPL=32↵
#include<stdio.h>#include<stdlib.h>typedef struct{unsigned int weight;unsigned int parent, lchild, rchild;}HTNode, *HuffmanTree;int min1, min2;int w[10000];void Select(HuffmanTree &HT, int i){int flag = 1200000000;int j;min1 = 0; min2 = 0;for (j = 0; j <= i; j++){if (HT[j].parent == 0 && HT[j].weight < flag){min1 = j;flag = HT[j].weight;}}flag = 1200000000;for (j = 0; j <= i; j++){if (HT[j].parent == 0 && HT[j].weight < flag){if (j != min1){min2 = j;flag = HT[j].weight;}}}}void BuildHuffmanTree(HuffmanTree &HT, int *w, int n){int m;int i;HuffmanTree p;m = 2 * n - 1;HT = (HuffmanTree)malloc((m + 1)*sizeof(HTNode));for (p = HT, i = 1; i <= n; ++i, ++p, ++w)*p = { *w, 0, 0, 0 };for (; i <= m+1; ++i, ++p)*p = { 0, 0, 0, 0 };for (i = n; i < m; ++i){Select(HT, i - 1);HT[min1].parent = i;HT[min2].parent = i;HT[i].lchild = min1;HT[i].rchild = min2;HT[i].weight = HT[min1].weight + HT[min2].weight;}}int Count(HuffmanTree &HT, int n){int count=0, flag;int i;for (i = 0; i < n; i++){flag = i;while (HT[flag].parent != 0){count += HT[i].weight;flag = HT[flag].parent;}}return count;}int main(){int n;int i;int WPL;HuffmanTree HT;scanf("%d", &n);for (i = 0; i < n; i++)scanf("%d", &w[i]);BuildHuffmanTree(HT, w, n);if (n == 1)printf("WPL=%d\n", w[0]);else{WPL = Count(HT, n);printf("WPL=%d\n", WPL);}return 0;}
0 0
- 15. 计算WPL
- 霍夫曼树计算 WPL
- 10. 计算WPL
- WPL
- 哈夫曼树的建立、编码以及WPL值的计算
- 给定权值 {19,01,23,14,55,20,84,27 },构造相应的哈夫曼树,计算WPL.
- 2216 求WPL
- hdu 1053 huffman WPL
- 九度:1172<哈夫曼树WPL>
- 哈夫曼树 带权路径长度WPL
- WPL算法(二叉树问题)
- POJ1521---哈夫曼编码,求最优WPL
- 小顶堆_优先队列 ,实现哈夫曼树的WPL求值
- 哈夫曼树的最长带权路径WPL算法
- 递归求huffman树的叶子结点的加权路径长度wpl
- 哈夫曼(Huffman)树创建及其带权路径长度(WPL)、哈夫曼编码、哈夫曼解码
- 计算
- 计算
- 11.求循环节
- postgres 优化案例
- 安卓第五课:游戏得分(内容提纲)
- C++学习笔记(第11章->使用类)
- Double-Checked Locking Is Fixed In C++11
- 15. 计算WPL
- ie专有hack
- [English]表示比较的语句
- UVA 10494-If We Were a Child Again(大数除法及取余)
- Direct3D开启光照和使用材质绘制物体
- 16. 前缀码判定
- hdu3157 有源汇上下界最小流
- Mysql服务器设置及技巧
- hibernate 导出数据库成功 在hibernate里面做数据库