Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 34169 | Accepted: 14666 |
Description
Input
Output
Sample Input
dog ogday cat atcay pig igpay froot ootfray loops oopslay atcay ittenkay oopslay
Sample Output
cat eh loops
Hint
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int Max=27; const int maxn=811000; struct node { int sign; char str[20]; int next[Max]; }a[maxn]; int cur=0; void insert(char *s,char *t) { int len,ans; int p=0; len=strlen(s); for(int i=0;i<len;i++) { ans=s[i]-'a'; if(a[p].next[ans]!=0) { p=a[p].next[ans]; } else { a[p].next[ans]=++cur; a[cur].sign=0; p=a[p].next[ans]; } } strcpy(a[p].str,t); a[p].sign=1; } void find(char *s) { int len,ans; int p=0; len=strlen(s); for(int i=0;i<len;i++) { ans=s[i]-'a'; if(a[p].next[ans]==0) { printf("eh\n"); return; } p=a[p].next[ans]; } if(a[p].sign) printf("%s\n",a[p].str); else printf("eh\n"); } int main() { char str[30]; while(gets(str)&&str[0]) { int pos=0; while(str[pos++]!=' '); str[pos-1]=0; insert(str+pos,str); } while(gets(str)) find(str); return 0; }
原文:http://blog.csdn.net/caduca/article/details/43535333