1251 字典树 模板
2013-09-04 17:27
148 查看
参考资料 :
http://www.wutianqi.com/?p=1359
http://blog.csdn.net/xingyeyongheng/article/category/1516007
http://www.wutianqi.com/?p=1359
http://blog.csdn.net/xingyeyongheng/article/category/1516007
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct Trie { int num; Trie *next[26];//指针数组 }root; void createTrie(char *str)//建树 { int len = strlen(str); Trie *p = &root, *q; for(int i = 0; i < len; i++) { int id = str[i] - 'a'; if(p->next[id] == NULL)//对应的位置为空 { q = (Trie *)malloc(sizeof(root)); q->num = 1; for(int j = 0; j < 26; j++) q->next[j] = NULL; p->next[id] = q; p = p->next[id]; } else { p->next[id]->num++; p = p->next[id]; } } } int findTrie(char *str) { int len = strlen(str); Trie *p = &root; for(int i = 0; i < len; i++) { int id = str[i] - 'a'; p = p->next[id]; if(p == NULL) return 0; } return p->num; } int main() { char str[15]; for(int i = 0; i < 26; i++) root.next[i] = NULL;//初始化,root 不是指针 while(gets(str) && str[0] != '\0') createTrie(str); memset(str, 0, sizeof(str)); while(scanf("%s", str) != EOF) { int ans = findTrie(str); printf("%d\n", ans); } return 0; }
相关文章推荐
- HDU - 1251 统计难题(字典树模板题)
- HDOJ 1251-统计难题【模板:字典树】
- 字典树模板--静态 ----HDU 1251
- HDU:1251-统计难题(字典树模板,动态建树,静态建树)
- 【字典树模板(数组实现)】HDU 1251 统计难题
- Hdu 1251-统计难题(字典树模板题)
- 字典树模板 HDU - 1251
- HDOJ 题目1251统计难题(字典树,模板)
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
- HDU - 1251 统计难题(字典树模板题)
- HDU 1251 统计难题(字典树模板)
- hdu 1251 统计难题 字典树解释 +字典树模板
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
- 字符串_字典树(模板 hdu 1251)
- HDU 1251 (统计难题) 字典树模板&&map实现
- HDU 1251 统计难题 【字典树模板题】
- HDU1251——统计难题(字典树模板)
- HDU 1251 统计难题 (字典树模板题)
- hdu1251 字典树trie 模板题
- HDU 1251 统计难题 (字典树基本模板,有详细注释)