首页 > 代码库 > Quicksearch1035
Quicksearch1035
输入一部字典,输入若干单词
1、 若某个单词能在字典中找到,则输出corret
2、 若某个单词能通过 变换 或 删除 或 添加一个字符后,在字典中找得到,则输出这些单词,输出顺序根据 输入的那部字典的字典序
3、 若某个单词无论操作与否都无法在字典中找得到,则输出空
#include <stdio.h>#include <stdlib.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++);//忽略了In中的一个字符 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++);//忽略了Dt[a]中的一个字符 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;}
Quicksearch1035
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。