| Time Limit: 3000MS | Memory Limit: 65536KB | 64bit IO Format: %I64d & %I64u |
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<stdio.h>
#include<string.h>
using namespace std;
const int MAX= 260050;
const int branchNum= 26;
struct TriedNode
{
char re[12];
TriedNode *branch[branchNum];
};
TriedNode root ;
TriedNode node [MAX];
int p=0;
void Initial()
{
memset((void*)node ,0,sizeof(node));
}
void Insert(char *word,char *re)
{
if(NULL==word)
{
return ;
}
TriedNode *location=&root;
while(*word)
{
if(NULL==location->branch[*word-'a'])
{
location->branch[*word-'a']=&node [p++];
}
location=location->branch[*word-'a'];
++word;
}
strcpy(location->re,re);
}
void Search(char*res,char *word)
{
if(NULL==word)
{
return ;
}
TriedNode *location=&root;
while(*word)
{
if(location->branch[*word-'a'])
{
location=location->branch[*word-'a'];
}
else
{
strcpy(res,"eh");
return ;
}
word++;
}
strcpy(res,location->re);
}
int main()
{
char word[12];
char eng[12];
char res[12];
char ch='\0';
Initial();
while(scanf("%s%s",eng,word)!=EOF)
{
Insert(word,eng);
getchar();
ch=getchar();
if('\n'!=ch)
{
ungetc(ch,stdin);
continue;
}
break;
}
while(scanf("%s",word)!=EOF)
{
Search(res,word);
printf("%s\n",res);
}
return 0;
}
1107



被折叠的 条评论
为什么被折叠?



