poj 2503 Babelfish(字典树·翻译)

网友投稿 608 2022-11-09

poj 2503 Babelfish(字典树·翻译)

poj 2503 Babelfish(字典树·翻译)

题目:​​class="data-table" data-id="t7a7e9d1-dZWS76iK" data-transient-attributes="class" data-width="802px" style="width: 100%; outline: none; border-collapse: collapse;">

Default



Babelfish



Description



You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.


Input



Input consists of up to 100,000 dictionary entries, followed by a blank line, followed by a message of up to 100,000 words. Each dictionary entry is a line containing an English word, followed by a space and a foreign language word. No foreign word appears more than once in the dictionary. The message is a sequence of words in the foreign language, one word on each line. Each word in the input is a sequence of at most 10 lowercase letters.


Output



Output is the message translated to English, one word per line. Foreign words not in the dictionary should be translated as "eh".


Sample Input


dog ogdaycat atcaypig igpayfroot ootfrayloops oopslayatcayittenkayoopslay


Sample Output


catehloops


Hint



Huge input and output,scanf and printf are recommended.

Time Limit: 3000MS

 

Memory Limit: 65536K

Total Submissions: 37107

 

Accepted: 15811

分析:这和hdu 1075 what are you talking about 很像,甚至比它还要简单。就是利用字典树进行单词翻译。

#include #include #include using namespace std;struct node{ bool cover; char word[15]; node *next[26]; node(){ cover=0; memset(word,0,sizeof(word)); memset(next,0,sizeof(next)); }};node *root;void insert(char *s1,char *s2){ node *p=root; int length=strlen(s2); for(int i=0;inext[s2[i]-'a']==0) p->next[s2[i]-'a']=new node(); p=p->next[s2[i]-'a']; } p->cover=1; strcpy(p->word,s1);}void del(node *p){ if(p==NULL){ return ; } for(int i=0;i<26;i++) del(p->next[i]); delete p;}char* query(char *s){ int length=strlen(s); node *p=root; for(int i=0;inext[s[i]-'a']==0) return 0; p=p->next[s[i]-'a']; } if(p->cover) return p->word; return 0;}char str[30],s1[15],s2[15];void strcpy(char *s,char *f,int start,int end){ for(int i=start;i<=end;i++){ s[i-start]=f[i]; } s[end-start+1]=0;}int main(){ //freopen("cin.txt","r",stdin); root=new node(); while(gets(str)){ int length1,slen=strlen(str); //slen=0意味着空行 if(slen==0) break; for(int i=0;i

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:hdu 2066 一个人的旅行 (单源最短距离)
下一篇:如何基于sqlite实现kafka延时消息详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~