YTU 3027: 哈夫曼编码

网友投稿 288 2022-11-29

YTU 3027: 哈夫曼编码

3027: 哈夫曼编码

时间限制:  1 Sec   内存限制:  128 MB

提交:

2   解决:  2

题目描述

设计一个程序,构造一颗哈夫曼树,输出对应的哈夫曼编码。

输入

输入数据有两行,第一行为一个整数n,代表接下来要输入n个整数,然后我们用这n个整数构造一个哈夫曼树。

输出

输出对应的哈夫曼编码,每一个哈夫曼编码占一行。

样例输入

87 19 2 6 32 3 21 10

样例输出

1010001000010011110001011011

先建立哈夫曼树,然后从原有数据所在叶子节点向上回溯,保存哈夫曼编码输出~

AC代码:

#include#include#define MAXVALUE 0xfffffusing namespace std;typedef struct //构造哈夫曼树结点{ int weight; //权值 int parent; //父节点 int lchild; //左子树 int rchild; //右子树} HNodeType;HNodeType HFMTree[105];//结点数typedef struct //构造哈夫曼编码数组{ int bit[105]; int start;} HCodeType;HCodeType HFMCode[105];void CreateHTree(HNodeType HFMTree[],int n)//创建哈夫曼树{ int m1,x1,m2,x2,i,j; for(i=0; i<2*n-1; i++) //初始化 HFMTree[i].parent=HFMTree[i].lchild=HFMTree[i].rchild=-1; for(i=0; i>HFMTree[i].weight; for(i=0; i>n; CreateHTree(HFMTree,n); CreateHCode(HFMTree,HFMCode,n); for(i=0; i

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:@Validated和@Valid三种异常捕获处理方式
下一篇:山东省第七届ACM省赛------Reversed Words
相关文章

 发表评论

暂时没有评论,来抢沙发吧~