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<stdio.h>
#include<string.h>
#include<malloc.h>
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;
}
}
}
}

最新文章

  1. ovirt配置为cas登录
  2. JS正则表达式验证数字
  3. iOS开发UI篇—iPad开发中得modal介绍
  4. 20151120 jsp相关
  5. mysql 转义字符
  6. windows平台安装并使用MongoDB
  7. 天梯赛-L1-018. 大笨钟
  8. Element类型和HTML元素获取
  9. 如何解压DMK固件
  10. C# [Win32] [API] WS_TABSTOP 無效的解決辦法
  11. BZOJ4695 最假女选手(势能线段树)
  12. 为SNP增加种族人群频率
  13. Html-根据不同的分辨率设置不同的背景图片
  14. vscode已有64位版本。
  15. Hive之示例一:基本操作与案例
  16. AngularJS config run 及区别和例子
  17. 手把手教你封装 Vue 组件并使用 NPM 发布
  18. C#中XmlSerializer实现序列化浅析
  19. unity中利用纯物理工具制作角色移动跳跃功能
  20. bzoj千题计划266:bzoj4872: [六省联考2017]分手是祝愿

热门文章

  1. Fragment使用
  2. Vi/VIM键盘图, Vi/vim学习图
  3. aop编程 环绕round
  4. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
  5. 四大流行的java连接池之BoneCP篇
  6. spoj 1812 lcsII (后缀自动机)
  7. 用 PS 复制权限
  8. ClassLoader载入指定的类需注意六个细节或报ClassNotFundEception异常总结
  9. UVA 10739 String to Palindrome(dp)
  10. swift 有些语法还是不支持。