码迷,mamicode.com
首页 > 其他好文 > 详细

[POJ1035]Spell checker

时间:2017-05-21 20:40:55      阅读:175      评论:0      收藏:0      [点我收藏+]

标签: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 }

 

[POJ1035]Spell checker

标签:logs   break   log   size   names   bool   put   输出   cst   

原文地址:http://www.cnblogs.com/Mrsrz/p/6885782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!