91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-09
  • 語言: C/C++
  • 標簽:

資源簡介

對26個英文字母(已知它們的概率分布)進行了哈夫曼編碼,并計算了編碼效率。有助于大家理解哈夫曼編碼以及信息論的相關知識哦。

資源截圖

代碼片段和文件信息

//得到26個英文字母的哈夫曼編碼,并計算編碼效率和壓縮比
#include
#include
#include
#define?K?26 //26個字母
#pragma?comment(linker?“/subsystem:console“)

struct?code //二元碼字
{
int?cod; //二元碼字,存放在int?cod的各位中
char?len_cod; //碼字長度
float?prob; //在符號空間中出現的概率
};
struct?tree //用于得到哈夫曼碼構造的哈夫曼樹
{
float?prb[2*K-1]; //2*K-1個結點
char?left[K-1]; //左孩子
char?right[K-1]; //右孩子
};

float?pcb[K]={8.191.473.833.9112.252.261.714.57
??7.100.140.413.773.347.067.262.89
??0.096.856.369.412.581.091.590.21
??1.580.08}; //26個英文字母概率矢量(百分比)
code?hufcode[K]; //哈夫曼編碼
tree?huftree; //哈夫曼樹

void?add_sig_0(char?node); //遞歸函數
void?add_sig_1(char?node); //往某結點下所有葉子結點對應的碼字添加0或1

void?main()
{
int?i;
char?min1=0min2=0; //倆最小值的index
char?visit[2*K-1]; //各結點是否被訪問過
memset(visit02*K-2);
//初始化
for(i=0;i {
hufcode[i].prob=huftree.prb[i]=pcb[i]/100; //概率,賦給碼字,也賦給樹的葉子結點
hufcode[i].len_cod=0; //碼字從、長度
hufcode[i].cod=0; //碼字
}
//找最小并合并,K-1次
for(int?cnt=0;cnt {
//先從頭找到第一個沒被訪問過的
for(i=0;i if(visit[i]==0) //沒被訪問過
{
min1=i;
break;
}
//找第二個沒被訪問過的
for(i=i+1;i if(visit[i]==0)
{
if(huftree.prb[i]

評論

共有 條評論