Hdu 1075
来源:互联网 发布:贵阳市大数据展示中心 编辑:程序博客网 时间:2024/06/05 07:55
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1075
题目大意:
先给出一些单词的英文翻译,然后给出一篇文章,存在标点,若文章中单词存在翻译,则转换成英文单词,若没有则不变,然后输出翻译后的文章
分析:
建立一个译文数组,在字典树中插入单词时,即可在单词结点处添加对应译文在数组中的下标,然后遍历文章,遇到标点与空格切分单词,特判最后末尾不是标点的情况,在树中查找是否出现过当前单词即可,存在即将单词的译文输出,否则输出原文,然后将当前遍历的标点直接输出
代码:
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cmath>#include<map>using namespace std;typedef long long ll;struct Trie{ Trie *next[26]; int val; Trie(){ val = -1; for (int i = 0 ; i < 26 ; i ++) next[i] = NULL; }};void addword(char *str,Trie* node,int i){ if (node->next[str[0]-'a']==NULL) { node->next[str[0]-'a'] = new Trie; node = node->next[str[0]-'a']; } else { node = node->next[str[0]-'a']; } str++; if (*str) addword(str,node,i); else { node->val = i; return; }}int query(char *str ,Trie *node){ if (node->next[*str-'a']==NULL) return -1; else node= node->next[*str-'a']; ++str; if (*str) return query(str,node); else return node->val;}char str[4000];char temp[4000],tw[4000];char word[1200000][20];int main(){ int T,n,i; int cnt = 0; Trie* head = new Trie; scanf("%s",str); getchar(); gets(str); while (strcmp(str,"END")!=0) { for (i = 0 ; ; i ++) { if (str[i]==' ') { word[cnt][i++] = 0; break; } else word[cnt][i] = str[i]; } cnt++; addword(str+i,head,cnt-1); gets(str); } scanf("%s",str); getchar(); gets(str); int lw; while (strcmp(str,"END")!=0) { cnt =0; int tp = 0; memset(temp,0,sizeof(temp)); for (i = 0; str[i]; i ++) { if (str[i]>='a'&&str[i]<='z') { tw[cnt++] = str[i]; } else { if (cnt!=0) { tw[cnt] = 0; int pos = query(tw,head); if (pos!=-1) { strcat(temp,word[pos]); tp += strlen(word[pos]); } else { strcat(temp,tw); tp += strlen(tw); } cnt = 0; } temp[tp++] = str[i]; } } if (cnt!=0) { tw[cnt] = 0; int pos = query(tw,head); if (pos!=-1) { strcat(temp,word[pos]); tp += strlen(word[pos]); } else { strcat(temp,tw); tp += strlen(tw); } cnt = 0; } temp[tp] = 0; printf("%s\n",temp); gets(str); } return 0;}
阅读全文
0 0
- HDU 1075
- hdu 1075
- hdu 1075
- hdu 1075
- 1075(hdu)
- hdu 1075
- HDU 1075
- hdu 1075
- hdu 1075
- HDU 1075
- HDU 1075
- Hdu 1075
- Hdu 1075+ Hdu 1251 (动态Trie)
- [字典树]hdu 1075
- hdu 1075 字典树
- 字典树 hdu 1075
- hdu 1075 tire树
- hdu 1075 map
- tar 解压 gzip 文件提示 gzip: stdin: not in gzip format
- 给ROM包内置ROOT权限,刷机以后立马拥有ROOT权限
- 企业网站建设必须注意四点要素
- Java-用星号打印菱形
- LAMP和LNMP编译安装之前,需要先安装这些依赖包
- Hdu 1075
- 点击页面判断是否安装app并打开,否则跳转app store的方法
- SEO(搜索引擎优化)sitemap的优化
- Android.mk的用法和基础
- spring声明式事务总结一
- 求数组中最大值
- 极客学院 TensorBoard:可视化学习
- MFC中将窗口最小化到托盘实现原理及操作步骤
- CentOS7下安装配置流媒体服务器Red5