| 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