早教吧作业答案频道 -->其他-->
霍夫曼编码 c语言程序 求能运行的能算出结果的已知信源:s1=0.20,s2=0.18,s3=0.17,s4=0.15,s5=0.15,s6=0.05,s7=0.05,s8=0.05,给出其中一个霍夫曼码,并求其平均码长和编码效率.
题目详情
霍夫曼编码 c语言程序 求能运行的能算出结果的
已知信源:s1=0.20,s2=0.18,s3=0.17,s4=0.15,s5=0.15,s6=0.05,s7=0.05,s8=0.05,给出其中一个霍夫曼码,并求其平均码长和编码效率.
已知信源:s1=0.20,s2=0.18,s3=0.17,s4=0.15,s5=0.15,s6=0.05,s7=0.05,s8=0.05,给出其中一个霍夫曼码,并求其平均码长和编码效率.
▼优质解答
答案和解析
#include "stdio.h"
#include "stdlib.h"
#include
#include
#define n 8
#define m 2*n-1
typedef struct
{
float weight;
int lchild,rchild,parent;
}HTNode;
typedef HTNode HuffmanTree[m];
void InitHuffmanTree(HuffmanTree T)
{
for(int i = 0;i < m;i++)
{
T[i].lchild = T[i].rchild = T[i].parent = -1;
T[i].weight = 0.0;
}
}
void InputWeight(HuffmanTree T)
{
float temp[n] = {0.20,0.18,0.17,0.15,0.15,0.05,0.05,0.05};
for(int i = 0;i < n;i++)
T[i].weight = temp[i];
}
void SelectMin(HuffmanTree T,int i,int *p1,int *p2)
{
int j;
*p1 = *p2 = m-1;
T[m-1].weight = FLT_MAX;
for(j = 0;j = 0;j--)
printf("%d",arr[j]);
printf("\n");
return count;
}
int main()
{
HuffmanTree T;
CreateHuffmanTree(T);
float ave = 0;
for(int i = 0;i < n;i++)
ave += T[i].weight*PrintHuffmanCode(T,i);
printf("平均码长:\t%f\n",ave);
printf("编码效率:\t%f%%\n",ave/ceil(log((double)n)/log((double)2))*100);
system("pause");
}
#include "stdlib.h"
#include
#include
#define n 8
#define m 2*n-1
typedef struct
{
float weight;
int lchild,rchild,parent;
}HTNode;
typedef HTNode HuffmanTree[m];
void InitHuffmanTree(HuffmanTree T)
{
for(int i = 0;i < m;i++)
{
T[i].lchild = T[i].rchild = T[i].parent = -1;
T[i].weight = 0.0;
}
}
void InputWeight(HuffmanTree T)
{
float temp[n] = {0.20,0.18,0.17,0.15,0.15,0.05,0.05,0.05};
for(int i = 0;i < n;i++)
T[i].weight = temp[i];
}
void SelectMin(HuffmanTree T,int i,int *p1,int *p2)
{
int j;
*p1 = *p2 = m-1;
T[m-1].weight = FLT_MAX;
for(j = 0;j = 0;j--)
printf("%d",arr[j]);
printf("\n");
return count;
}
int main()
{
HuffmanTree T;
CreateHuffmanTree(T);
float ave = 0;
for(int i = 0;i < n;i++)
ave += T[i].weight*PrintHuffmanCode(T,i);
printf("平均码长:\t%f\n",ave);
printf("编码效率:\t%f%%\n",ave/ceil(log((double)n)/log((double)2))*100);
system("pause");
}
看了 霍夫曼编码 c语言程序 求能...的网友还看了以下:
设a为三阶矩阵,有特征值λ1,λ2,λ3,其对应的特征向量分别是ξ1=[1,0,0],ξ2=[1, 2020-04-13 …
设a为三阶矩阵,有特征值λ1,λ2,λ3,其对应的特征向量分别是ξ1=[1,0,0],ξ2=[1, 2020-04-13 …
还是lingo问题road(country,country):length,xie,c;endse 2020-05-13 …
霍夫曼编码 c语言程序 求能运行的能算出结果的已知信源:s1=0.20,s2=0.18,s3=0. 2020-05-13 …
有关概率一个运输系统,在不同的运输水平下其故障不同.在低、中、高运输水平下其故障率分别为0,0.1 2020-05-17 …
ansys直接建立有限元模型问题finish/clear/prep7n,1,0,0,0n,2,0, 2020-05-17 …
求概率:一信源出现0的概率是2/3,出现1的概率是1/3,p(0/0)概率是0.9,p(1/1)概 2020-07-13 …
网络工程应用题:某单位分配到一个B类IP地址,其net-id为129.250.0.0。该单位有20 2020-07-18 …
设f'(x)=arctan[(x-1)^2],f(0)=0,求∫(0,1)f(x)dx,其中0是下 2020-07-22 …
(x,y)=(0,0)时,g(x,y)=0,它的二阶导数gyx(0,0)和gxy(0,0)等于多少 2020-08-01 …