贪心:Huffman编码

贪心:Huffman编码,第1张

Huffman编码,
       报文中只出现5个字符{A,B,C,D,E} ,他们出现的频次分别为{3,4,5,8,10};
1)给出最经济的编码,
           相当于构造一棵叶子带权分别是(3,4,5,8,10)
           的最优二叉树(Huffman树)
           从树中得到最经济的编码 
2)并给出报文的译文长度。 

#include 
#include 
#define N 5
/*	Huffman编码,
	报文中只出现5个字符{A,B,C,D,E} ,他们出现的频次分别为{3,4,5,8,10};
	1)给出最经济的编码,
       相当于构造一棵叶子带权分别是(3,4,5,8,10)
	   的最优二叉树(Huffman树)
       从树中得到最经济的编码 ,
   2)并给出报文的译文长度。 
*/   
char zf[]="ABCDE";//字符 
int qz[]={3,7,9,5,6};//权值(频率) 
char bmb[N][N];//编码表 
//赫夫曼树 
struct node{
	int data;
	int l;
	int r;
	int p;
}arr[N*2-1];
//找到arr数组最小和次小的权值
void select(struct node arr[],int k,int *m1,int *m2){
	int i,m11=101,m22=102;
	for(i=0;i

 输出结果:

序号    父节点  左孩子  右孩子  父节点
0       3       -1      -1      5
1       7       -1      -1      7
2       9       -1      -1      6
3       5       -1      -1      5
4       6       -1      -1      6
5       8       0       3       7
6       15      4       2       8
7       15      1       5       8
8       30      6       7       -1

A的编码:100
B的编码:10
C的编码:01
D的编码:000
E的编码:11
报文的译文长度:68
--------------------------------
Process exited after 0.01589 seconds with return value 0
请按任意键继续. . .

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1324343.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)