博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1075What Are You Talking About (字典树)
阅读量:6087 次
发布时间:2019-06-20

本文共 3503 字,大约阅读时间需要 11 分钟。

Problem Description
Ignatius is so lucky that he met a Martian yesterday. But he didn't know the language the Martians use. The Martian gives him a history book of Mars and a dictionary when it leaves. Now Ignatius want to translate the history book into English. Can you help him?
Input
The problem has only one test case, the test case consists of two parts, the dictionary part and the book part. The dictionary part starts with a single line contains a string "START", this string should be ignored, then some lines follow,
each line contains two strings, the first one is a word in English, the second one is the corresponding word in Martian's language. A line with a single string "END" indicates the end of the directory part, and this string should be ignored. The book part starts with a single line contains a string "START", this string should be ignored,
then an article written in Martian's language.
You should translate the article into English with the dictionary.
If you find the word in the dictionary you should translate it and write the new word into your translation,
if you can't find the word in the dictionary you do not have to translate it, and
just copy the old word to your translation. Space(' '), tab('\t'), enter('\n') and all the punctuation should not be translated. A line with a single string "END" indicates the end of the book part, and that's also the end of the input.
All the words are in the lowercase, and each word will contain at most 10 characters, and each line will contain at most 3000 characters.
Output
In this problem, you have to output the translation of the history book.
Sample Input
 
START from fiwo hello difh mars riwosf earth fnnvk like fiiwj END START difh, i'm fiwo riwosf. i fiiwj fnnvk! END
Sample Output
 
hello, i'm from mars. i like earth! [hint] Huge input, scanf is recommended. [/hint]
#include
#include
#include
typedef struct nnn{ int flag; char *traslat; struct nnn *next[26];}node;node *builde(){ node *p=(node*)malloc(sizeof(node)); p->flag=0; for(int i=0;i<26;i++) p->next[i]=NULL; return p;}node *root;void insert(char str[],char tras[]){ node *p=root; for(int i=0;str[i]!='\0';i++) { if(p->next[str[i]-'a']==NULL) p->next[str[i]-'a']=builde(); p=p->next[str[i]-'a']; } p->flag=1; int len=strlen(tras)+1; p->traslat=(char*)malloc(len*sizeof(char)); strcpy(p->traslat,tras);}void trasl(char str[]){ node *p=root; for(int i=0;str[i]!='\0';i++) { if(p->next[str[i]-'a']==NULL) { printf("%s",str); return ; } p=p->next[str[i]-'a']; } if(p->flag) printf("%s",p->traslat); else printf("%s",str);}int main(){ char tras[15],str[3005],str1[15]; root=builde(); while(scanf("%s",tras)>0&&strcmp(tras,"END")!=0) { if(strcmp("START",tras)==0)continue; scanf("%s",str); insert(str,tras); } getchar(); while(gets(str),strcmp(str,"END")!=0) { if(strcmp("START",str)==0)continue; int len=strlen(str); for(int i=0,j=0;i<=len; i++) { if(str[i]>='a'&&str[i]<='z') str1[j++]=str[i]; else { str1[j]='\0'; if(j) trasl(str1); if(i==len||str[i]=='\n')printf("\n"); else if(str[i]=='\t') printf("\t"); else printf("%c",str[i]); j=0; } } }}

转载地址:http://vapwa.baihongyu.com/

你可能感兴趣的文章
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
CentOS6.4关闭触控板
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>
exchange 2010 队列删除
查看>>