不好意思。。。。顶个老贴。。。。。。
复制内容到剪贴板
代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define WCHAR 1
#define NUM 2
#define STR 3
#define INT 4
int CheckData(int,int);
int i,j,number=1,lzw=0;
char char1[200]={0};
int prl[101][2]={1};
char char2[200]={0};
int main(void)
{
scanf("%s",char1);
scanf("%s",char2);
for(i=0;i<strlen(char1);i++)
{
if(char1[i]>47&&char1[i]<58)
{
if(prl[number][0]==NUM)
prl[number][1]++;
else
{
j++;
prl[number][0]=NUM;
prl[number][1]=prl[number-1][1]+1;
}
}
else if((char1[i]>64&&char1[i]<91)||(char1[i]>96&&char1[i]<123))
{
if(prl[number][0]==STR)
prl[number][1]++;
else
{
number++;
prl[number][0]=STR;
prl[number][1]=prl[number-1][1]+1;
}
}
else if(char1[i]>0)
{
number++;
prl[number][0]=INT;
prl[number][1]=prl[number-1][1]+1;
}
else
{
number++;
prl[number][0]=WCHAR;
prl[number][1]=prl[number-1][1]+2;
i++;
}
}
for(i=0;i<strlen(char2);i++)
{
if(char2[i]>0)
i+=CheckData(i,NUM);
else
i+=CheckData(i,WCHAR)*2;
}
printf("%d\n",lzw);
return 0;
}
int CheckData(int n,int style)
{
int x;
int time=0;
int index;
for(x=1;x<=number;x++)
if(style==prl[x][0]&&style!=WCHAR)
{
index=prl[x-1][1];
while(char1[index+time]==char2[n+time])
time++;
lzw++;
}
else if(style==prl[x][0]&&style==WCHAR)
{
index=prl[x-1][1];
while(char1[index+time]==char2[n+time]&&char1[index+time+1]==char2[n+time+1])
time+=2;
lzw+=time*time;
}
return time;
}