电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

算术编码的C++实现VIP免费

算术编码的C++实现_第1页
1/5
算术编码的C++实现_第2页
2/5
算术编码的C++实现_第3页
3/5
算术编码的C++实现#include#include#include#includeusingnamespacestd;#defineN50//输入的字符应该不超过50个structL//结构用于求各字符及其概率{charch;//存储出现的字符(不重复)intnum;//存储字符出现的次数doublef;//存储字符的概率};//显示信息voiddisp();//求概率函数,输入:字符串;输出:字符数组、字符的概率数组;返回:数组长度;intproba(stringstr,charc[],longdoublep[],intcount);//求概率的辅助函数intsearch(vectorarch,char,intn);//编码函数,输入:字符串,字符数组,概率数组,以及数组长度;输出:编码结果longdoublebma(charc[],longdoublep[],stringstr,intnumber,intsize);//译码函数,输入:编码结果,字符串,字符数组,概率数组,以及它们的长度;输出:字符串//该函数可以用于检测编码是否正确voidyma(stringstr,charc[],longdoublep[],intnumber,intsize,longdoubleinput);intmain(){stringstr;//输入要编码的String类型字符串intnumber=0,size=0;//number--字符串中不重复的字符个数;size--字符串长度charc[N];//用于存储不重复的字符longdoublep[N],output;//p[N]--不重复字符的概率,output--编码结果disp();cout<<"输入要编码的字符串:";getline(cin,str);//输入要编码的字符串size=str.length();//字符串长度number=proba(str,c,p,size);//调用求概率函数,返回不重复字符的个数cout.setf(ios::fixed);//“魔法配方”规定了小数部分的个数cout.setf(ios::showpoint);//在此规定编码结果的小数部分有十个cout.precision(10);output=bma(c,p,str,number,size);//调用编码函数,返回编码结果yma(str,c,p,number,size,output);//调用译码函数,输出要编码的字符串,//以验证编码是否正确return0;}//显示信息voiddisp(){cout<pt;//定义了结构类型的向量,用于同时存储不重复的字符和其概率Ltemp;//结构类型的变量temp.ch=str[0];//暂存字符串的第一个字符,它的个数暂设为1temp.num=1;temp.f=0.0;pt.push_back(temp);//将该字符及其个数压入向量for(inti=1;i=0){pt[k].num++;break;}else{pt.push_back(temp);break;}}}for(i=0;iarch,charch1,intn){for(inti=0;i

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

算术编码的C++实现

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群