算术编码的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