1.lzw c Դ?源码-136的源码?
lzw c Դ??
以下是哈夫曼编码
#include<iostream>
#include<math.h>
#include<string>
#include<iomanip>
using namespace std;
int n;
int isin(string str,char a)
{
int temp=0;
for(int i=0;i<str.length();i++)
{
if(str[i]==a) temp=1;
}
return temp;
}
void bubble(double p[],string sign[])//排序
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(p[i]<p[j])
{
double temp=p[i];
p[i]=p[j];
p[j]=temp;
string m=sign[i];
sign[i]=sign[j];
sign[j]=m;
}
}
}
}
void huff(double tempp[],string tempstr[])
{
double p[][];
string sign[][];
sign[0][i]=tempstr[i]; //符号放在sign数组中
for(int i=0;i<n;i++)
{
p[0][i]=tempp[i]; //p数组放对应的概率(第1列中)
}
for(i=0;i<n-1;i++)
{
bubble(p[i],sign[i]); //第一次排序
for(int j=0;j<n-2-i;j++)
{
p[i+1][j]=p[i][j]; //前n-2-i个概率重新放在p数组中(是数组的第2列中)
sign[i+1][j]=sign[i][j];
}
p[i+1][j]=p[i][j]+p[i][j+1];//第一次两个最小概率求和
sign[i+1][j]=sign[i][j]+sign[i][j+1];//符号跟随
for(j=n-1-i;j<n;j++)
{
p[i+1][j]=0;
}
}
string final[];
for(i=n-2;i>=0;i--)
{
for(int k=0;k<n;k++)
{
if(isin(sign[i][n-2-i],sign[0][k][0])) final[k]+="0";
if(isin(sign[i][n-1-i],sign[0][k][0])) final[k]+="1";
}
}
cout<<setw(9)<<"哈弗曼编码如下:"<<endl;
for(i=0;i<n;i++)
{
cout<<setw(7)<<sign[0][i]<<setw(7)<<p[0][i]<<setw()<<final[i]<<
setw(7)<<final[i].length()<<endl;
}
}
void main()
{
char a[];
cout<<"该字符串符号为:";
cin>>a;
string s=a;
n=s.length();
char b[][2];
for(int i=0;i<n;i++)
{
b[i][0]=a[i];
b[i][1]='\0';
}
string str[];
for(i=0;i<n;i++)
{
str[i]=b[i];
}
double tempp[];
cout<<"字符概率依次为:";
for(i=0;i<n;i++)
{
cin>>tempp[i];
}
huff(tempp,str);
}
2024-11-29 20:362151人浏览
2024-11-29 18:582433人浏览
2024-11-29 18:361068人浏览
2024-11-29 18:351472人浏览
2024-11-29 18:312474人浏览
2024-11-29 18:162432人浏览
1.����Դ����������Դ������ 打开dev c++,创建一个源代码窗口 2. 输入一段代码。这段代码的意思是,输入一个类型为浮点数的数值。输出一个浮点数 3. 运行,结果
1.直播上网课是什么意思啊2.网课直播平台哪个好3.天津网校系统源码4.网课直播课如何操作5.网课直播怎么看直播上网课是什么意思啊 直播上网课指的是通过网络平台实现教学直播,在线辅导学生完成学习任
1.【PHP源码分析】FastCGI协议浅析2.php源码是什么意思3.php-8.3.3 源码编译安装以及扩展 redis 、gd和 sodium安装【PHP源码分析】FastCGI协议浅析 F