标签:logs break log size names bool put 输出 cst
题目大意:输入一个字典,再输入一些单词,如果单词在字典里有的则输出“*** is correct”,否则如果字典里某些单词能通过增加/删除/修改一个字符变成输入的单词,则依次输出这些单词。
思路:模拟、字符串处理。
按照题目要求模拟即可。
C++ Code:
1 #include<cstring> 2 #include<cstdio> 3 using namespace std; 4 char dic[10005][18]; 5 int n=1; 6 char s[18]; 7 int main(){ 8 while(scanf("%s",dic[n])&&dic[n][0]!=‘#‘)n++; 9 n--; 10 while(scanf("%s",s)&&s[0]!=‘#‘){ 11 bool flag=false; 12 printf("%s",s); 13 for(int i=1;i<=n;i++)if(strcmp(dic[i],s)==0){//判断在字典中有该单词的情况 14 flag=true; 15 break; 16 } 17 if(flag){ 18 printf(" is correct\n",s); 19 continue; 20 } 21 putchar(‘:‘); 22 for(int i=1;i<=n;i++){ 23 int dicL=strlen(dic[i]),sL=strlen(s); 24 if(dicL-sL==1){//判断删除一个字符符合条件的情况 25 int dicn=0,sn=0; 26 while(dic[i][dicn]==s[sn])dicn++,sn++; 27 dicn++; 28 while(dic[i][dicn]==s[sn]&&dicn!=dicL&&sn!=sL)dicn++,sn++; 29 if(dicn==dicL&&sn==sL)printf(" %s",dic[i]); 30 }else 31 if(sL-dicL==1){//判断插入一个字符符合条件的情况 32 int dicn=0,sn=0; 33 while(dic[i][dicn]==s[sn])dicn++,sn++; 34 sn++; 35 while(dic[i][dicn]==s[sn]&&dicn!=dicL&&sn!=sL)dicn++,sn++; 36 if(dicn==dicL&&sn==sL)printf(" %s",dic[i]); 37 }else 38 if(sL==dicL){//判断修改一个字符符合条件的情况 39 int dicn=0,sn=0; 40 while(dic[i][dicn]==s[sn])dicn++,sn++; 41 dicn++,sn++; 42 while(dic[i][dicn]==s[sn]&&dicn!=dicL&&sn!=sL)dicn++,sn++; 43 if(dicn==dicL&&sn==sL)printf(" %s",dic[i]); 44 } 45 } 46 putchar(‘\n‘); 47 } 48 return 0; 49 }
标签:logs break log size names bool put 输出 cst
原文地址:http://www.cnblogs.com/Mrsrz/p/6885782.html