HDU 1075(简单字典树)
来源:互联网 发布:免税店mac多少钱 编辑:程序博客网 时间:2024/05/16 17:21
题意:第一个START,END中给出字典对照,第二个START,END 给出要翻译的句子。
#include <cstdio>#include <cstring>#include <iostream>using namespace std;char dictionary[1000000][11];struct Trie{ int sub; Trie* next[26]; Trie() : sub(-1) { memset(next, 0, sizeof (next)); }};void insert(Trie* root, char* s, int pos){ Trie* p = root; int i = 0, n; while (s[i]) { n = s[i++] - 'a'; if (p->next[n] == NULL) p->next[n] = new Trie; p = p->next[n]; } p->sub = pos;}int search(Trie* root, char* s){ Trie* p = root; int i = 0, n; while (s[i]) { n = s[i++] - 'a'; if (p->next[n] == NULL) return -1; p = p->next[n]; } return p->sub;}int main(){ Trie* root = new Trie; char line[3010], temp[11]; int pos = 0, i; scanf("%s", line); while (scanf("%s", line), strcmp(line, "END")) { strcpy(dictionary[pos], line); scanf("%s", line); insert(root, line, pos++); } scanf("%s", line); getchar(); while (gets(line), strcmp(line, "END")) { i = 0; while (line[i]) { if (!(line[i] >= 'a' && line[i] <= 'z')) putchar(line[i++]); else { int start = i; while (line[i] >= 'a' && line[i] <= 'z') ++i; strncpy(temp, &line[start], i - start); temp[i - start] = '\0'; printf("%s", (start = search(root, temp)) == -1 ? temp : dictionary[start]); } } putchar('\n'); } return 0;}
0 0
- HDU 1075(简单字典树)
- hdu 1251简单字典树
- hdu 1251 简单字典树
- hdu 2846 简单字典树
- [字典树]hdu 1075
- hdu 1075 字典树
- 字典树 hdu 1075
- hdu 1075 字典树
- HDU 1075 字典树
- hdu 1075 字典树
- hdu 1075 字典树
- 字典树 hdu 1075
- hdu 1075 字典树
- hdu 1075 字典树
- HDU 1075 字典树
- 字典树 hdu 1075
- hdu 1075 字典树
- HDU 1075 字典树
- 黑马程序员学习log第十篇基础加强总结
- 马尔科夫链算法
- 黑马程序_网络编程
- 日语学习之一
- 关于flash跨域问题的解决办法
- HDU 1075(简单字典树)
- gtk + glade简单应用
- ASP.NET实现JAVASCRIPT和CSS的合并
- Eclipse按装Python开发环境
- 改变环境与改变自己
- eclipse打开当前文件所在目录方法
- 邹建的分页存储过程,呵呵速度不错啊~!
- 配置Eclipse经常忘记的问题
- Java解析魔兽争霸3录像W3G文件(三):解析游戏开始前的信息