tire树
来源:互联网 发布:有java基础学python 编辑:程序博客网 时间:2024/05/22 12:59
#include <iostream>#include<cstring>using namespace std;typedef struct Trie_node{ int count; // 统计单词前缀出现的次数 struct Trie_node* next[26]; // 指向各个子树的指针 bool exist; // 标记该结点处是否构成单词}TrieNode , *Trie;TrieNode* createTrieNode(){ TrieNode* node = new TrieNode; node->count = 0; node->exist = false; memset(node->next , 0 , sizeof(node->next)); // 初始化为空指针 return node;}void Trie_insert(Trie root, char* word){ Trie node = root; char *p = word; int id; while( *p ) { id = *p - 'a'; if(node->next[id] == NULL) { node->next[id] = createTrieNode(); } node = node->next[id]; // 每插入一步,相当于有一个新串经过,指针向下移动 ++p; node->count += 1; // 这行代码用于统计每个单词前缀出现的次数(也包括统计每个单词出现的次数) } node->exist = true; // 单词结束的地方标记此处可以构成一个单词}int Trie_search(Trie root, char* word){ Trie node = root; char *p = word; int id; while( *p ) { id = *p - 'a'; node = node->next[id]; ++p; if(node == NULL) return 0; } return node->count;}int main(){ Trie root = createTrieNode(); int n; char str[12]; cin>>n; for(int i=0;i<n;i++) { cin>>str; Trie_insert(root,str); } int m; char word[12]; cin>>m; for(int i=0;i<m;i++) { cin>>word; cout<<Trie_search(root,word)<<endl; } return 0;}
0 0
- tire树~!
- TIRE树
- Tire树
- tire树
- Tire树
- Tire树
- Tire树
- Tire树
- 字典树(Tire树)
- Tire字典树
- Tire字典树(zz)
- 讲解 tire 树
- hdu 1075 tire树
- Tire-字典树
- POJ2503 Babelfish Tire树
- hihoCoder1014 Tire树
- hdu1251 tire树入门
- POJ2418Hardwood Species(Tire树)
- 莫比乌斯反演升级版 HDU 4746
- 解决mysql中文显示为问号
- 在iOS开发中为什么使用多线程以及多线程的使用
- T-SQL
- 单链表的增、删、改、查多种功能的实现(c++语言)
- tire树
- 设计模式之单例模式
- 浏览器如何处理带上传控件的表单及服务器如何获取参数值
- kotlin学习四之类和继承
- JAVA之日期时间
- Linux 网络编程——并发服务器的三种实现模型
- Qt for Android 中集成 ShareSDK
- Hashtable的实现原理
- 剑指offer——二进制中1的个数