标签:
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 18418 | Accepted: 6759 |
Description
deleting of one letter from the word;
?replacing of one letter in the word with an arbitrary letter;
?
inserting of one arbitrary letter into the word.
Your task is to write the program that will find all possible replacements from the dictionary for every given word.
Input
Output
Sample Input
i is has have be my more contest me too if award # me aware m contest hav oo or i fi mre #
Sample Output
me is correct aware: award m: i my me contest is correct hav: has have oo: too or: i is correct fi: i mre: more me
Source
C++只是,G++过。。
。
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <cmath> using namespace std; struct node { char s[20]; int t; } dic[10010]; int ctt(char *str,char *ch) { int l1=strlen(str),l2=strlen(ch); int i,t=0; if(l1<l2) { for(i=0;i<l2;i++) { if(str[t]==ch[i]) t++; if(t==l1) return 1; } return 0; } else if(l1>l2) { for(i=0;i<l1;i++) { if(str[i]==ch[t]) t++; if(t==l2) return 1; } return 0; } else { for(i=0;i<l1;i++) { if(str[i]==ch[i]) t++; } if(t==l1-1) return 1; else return 0; } } int main() { int n=0,f=0,i; char str[20]; while(~scanf("%s",str)) { if(str[0]=='#')break; strcpy(dic[n].s,str); dic[n++].t=n; } //<<ctt("aware","award"); while(~scanf("%s",str)) { f=0; if(str[0]=='#')break; for(i=0; i<n; i++) { if(strcmp(str,dic[i].s)==0) { printf("%s is correct",str); f=1; break; } } if(!f) { printf("%s:",str); int l=strlen(str); for(i=0; i<n; i++) { if(strlen(dic[i].s)-l==1||strlen(dic[i].s)-l==-1||strlen(dic[i].s)-l==0) { if(ctt(str,dic[i].s)) printf(" %s"); } } } printf("\n"); } }
POJ训练计划1035_Spell checker(串处理/暴力)
标签:
原文地址:http://www.cnblogs.com/gcczhongduan/p/5268263.html