📄 huffman.cpp
字号:
#include <iostream>
#include <string>
using namespace std;
void main()
{
int a[8],b[8];
int i, j, k, aa;
string * code;
int x;
code = new string[8];
for(i = 0 ; i < 8 ; i ++)
code[i] = "";
cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7];//输入8个概率值
for(i = 0; i < 8; i ++)
b[i] =i;
for(j = 0; j < 7 ;j ++)
{
for(i=0;i<7-j;i++)
{
if(a[i] > a[i + 1])
{
aa = a[i] ;
a[i] = a[ i+ 1] ;
a[i + 1] = aa ;
for(k = 0; k < 8; k++)
{
if(b[k] == i)
b[k]=i+1;
else if(b[k] == i + 1)
b[k] = i ;
}
}
}
}
for( i = 0 ; i < 7; i ++)
{
for(k = 0; k < 8; k ++)
{
if(b[k] == i )
code[k] = "0" + code[k];
else if(b[k] == i + 1)
code[k] = "1" + code[k];
}
a[i + 1] += a[i];
for(k = 0; k < 8; k ++)
{
if(b[k] == i)
b[k] = i + 1;
}
for(j = i+1; j < 7 ;j ++)
{
if(a[j] > a[j + 1])
{
aa = a[j] ;
a[j] = a[j + 1] ;
a[j + 1] = aa ;
for(k = 0; k < 8; k++)
{
if(b[k] == j)
b[k]=j+1;
else if(b[k] == j + 1)
b[k] = j ;
}
}
else
break;
}
}
for( i = 0 ; i < 8; i ++)
{
cout<<code[i]<<endl;//输出结果
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -