HOJ 1898 Babelfish(Trie树)
2012-08-27 22:26
459 查看
题意就是先输入一个字典: 目标字符串-----输入字符串
然后输入一个字符串,在上面的对应关系中进行查找,如果有则输出目标字符串,没有则输出eh。
如果不想超时的话,明显就要套字典树了。
代码贴上来,留作模板。字典树还是挺简单易懂的嘛。。。
然后输入一个字符串,在上面的对应关系中进行查找,如果有则输出目标字符串,没有则输出eh。
如果不想超时的话,明显就要套字典树了。
代码贴上来,留作模板。字典树还是挺简单易懂的嘛。。。
#include <iostream> #include <cstdio> #include <cstring> #include <memory.h> using namespace std; const int num_char=26; struct TrieNode { TrieNode* branch[num_char]; char data[12]; }; TrieNode head; int insert(const char *des,const char *src) { TrieNode *hp=&head; while(*src!=0) { if((hp->branch[*src-'a'])==NULL)hp->branch[*src-'a']=new TrieNode(); hp=hp->branch[*src-'a']; src++; } // if((hp->data)==NULL)hp->data=new char[strlen(des)+1]; strcpy(hp->data,des); return 0; } bool search(const char *str,char *entry) { TrieNode* t=&head; while(*str!=0) { if((t->branch[*str-'a'])==NULL)return false; t=(t->branch[*str-'a']); str++; } strcpy(entry,t->data); return true; } int main() { char t[40]; while(gets(t)) { char src[12],des[12]; if(t[0]=='\0')break; sscanf(t,"%s %s",des,src); insert(des,src); } char consult[12]; while(scanf("%s",consult)!=EOF) { char entry[12]; if(search(consult,entry)) printf("%s\n",entry); else printf("eh\n"); } return 0; }
相关文章推荐
- POJ 2503 Babelfish (Trie树)
- poj 2503 Babelfish 用trie树做
- Babelfish trie树的基础
- poj 2503 Babelfish trie树!!!!指针版和数组版 基础
- POJ 2503 Babelfish (Trie树 或 map)
- poj 2503 Babelfish(trie树)
- 暑假- Trie树-(B - Babelfish)
- trie树 POJ 2503 Babelfish
- UVA 1519 - Dictionary Size(Trie树)
- HOJ 10148 Counting Prime(筛素数模板)
- 从Trie树(字典树)谈到后缀树(10.28修订)
- 跳跃表,字典树(单词查找树,Trie树),后缀树,KMP算法,AC 自动机相关算法原理详细汇总
- Trie树 --- 查找,删除,搜索
- Hoj_平方和与立方和
- HOJ 12926 Janeway’s Journey(斜率排序)
- hoj 2603 Look and Say
- BZOJ 1212 HNOI2004 L语言 AC自动机(Trie树)+动态规划
- hoj 1999 Data Manager
- CODEVS1187 Xor最大路径 (Trie树)
- hoj 1081 Scramble Sort