栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

贪心:Huffman编码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

贪心:Huffman编码

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
   
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
请按任意键继续. . .

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号