📄 lzw.cpp
字号:
#include<string.h>
#include<iostream.h>
void copy1(char *prefix,char *s,int i,int j)//拷贝字符串
{ int k;
for(k=0;k<20;k++)//将前缀字符清空
prefix[k]=0;
for(k=i;k<i+j;k++)
prefix[k-i]=s[k];
}
void main()
{
char s[30],prefix[30],dic[20][30]={"A","B","C"};
int i ,j,k,n,m;//k指字典中的编号,m指匹配号码,j指截取字母的长度
k=3;m=0;j=1;i=0;
cout<<"请输入:(ABBABABAC)\n";
cin.getline(s,30);
cout<<"输出-------词典-------------------\n";
for(int r=0; r<3; r++)
cout<<"\t("<<r<<dic[r]<<endl;
while(i < strlen(s))
{
copy1(prefix,s,i,j);//读取字符的长度
for(n=0;n<k;n++)//查找字典中的编号
{
if(strcmp(prefix,dic[n])==0)
{
j=j+1;m=n;
if((i+j)<=strlen(s))
copy1(prefix,s,i,j);
else
strcpy(prefix,"");
}
}
cout<<"("<<m<<")";
if(strlen(prefix)!=0)
{strcpy(dic[k],prefix);//写入字典
cout<<"\t("<<k<<")"<<dic[k]<<endl;}
k=k+1;
i=i+j-1;
j=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -