1.删除,变换,或补,上一个字母。使得输入==字典中已经有的单词。则输出该单词。
2.要能够忽略一个错误,继续匹配.
#include <stdio.h>
#include <string.h>
int Find(int a);
int n;
int lend[10001];
char Dt[10001][20],In[20],len;
int Find(int a)
{
int i,t;
t=lend[a]-len;
if (t==-1)
{
for (i=0;i<lend[a]&&Dt[a][i]==In[i];i++);
for (;i<lend[a]&&Dt[a][i]==In[i+1];i++);
if (i==lend[a])
return 0;
}
else if (t==0)
{
for (i=0;i<len&&Dt[a][i]==In[i];i++);
for (i++;i<len&&Dt[a][i]==In[i];i++);
if (i==len)
return 0;
}
else if (t==1)
{
for (i=0;i<len&&Dt[a][i]==In[i];i++);
for (;i<len&&Dt[a][i+1]==In[i];i++);
if (i==len)
return 0;
}
return 1;
}
int main()
{
int i;
scanf("%s",&Dt[0][0]);
while (Dt[n][0]!='#')
{
lend[n]=strlen(Dt[n]);
scanf("%s",&Dt[++n][0]);
}
scanf("%s",In);
while (In[0]!='#')
{
len=strlen(In);
for (i=0;i<n;i++)
if (lend[i]==len&&strcmp(Dt[i],In)==0)
{
printf("%s is correct\n",In);
break;
}
if (i==n)
{
printf("%s:",In);
for (i=0;i<n;i++)
if (Find(i)==0) printf(" %s",Dt[i]);
printf("\n");
}
scanf("%s",In);
} return 0;
}