字典树模板
来源:互联网 发布:打车软件营销方案 编辑:程序博客网 时间:2024/06/15 12:26
#include<iostream>#include<algorithm>#include<string.h>using namespace std;typedef struct Trie_node {int count;//统计单词前缀出现的次数struct Trie_node*next[26];//指向各个子树的指针bool exist;//标记该结点处是否构成单词}TrieNode,*Trie;TrieNode* creteTrieNode(){TrieNode *node = new TrieNode;node->count = 0;node->exist = false;memset(node->next, NULL, 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] = creteTrieNode();}node = node->next[id];//每插入一步,指针向下移动一位p++;node->count++;//统计每个单词前缀出现的次数}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(void){Trie root = creteTrieNode();char str[12];//bool flag = false;int n, m;cin >> n;getchar();while (n--) //gets_s(str){gets_s(str);Trie_insert(root, str);/*if (flag)cout << Trie_search(root, str) << endl;else {if (strlen(str) != 0)Trie_insert(root, str);else flag = true;}*/}cin >> m; getchar();while (m--){gets_s(str);cout << Trie_search(root, str) << endl;}return 0;}
阅读全文
0 0
- 字典树 模板
- 字典树【模板】
- 字典树模板
- 字典树模板
- 字典树模板
- 经典字典树模板
- hdu1247 字典树模板
- 字典树模板
- 字典树模板
- 字典树模板
- 字典树模板
- 字典树 模板
- 1251 字典树 模板
- 数据结构 字典树模板
- 字典树模板
- 字典树(trie)模板
- 字典树 模板+讲解
- 字典树模板
- 869B
- 一些java开发人员进阶要读的书籍(这些年,安放在我工位上的那些书)
- Redis Sentinel(哨兵) 和 Master+Slave(主从)的实现和原理分析
- 计算机图形学-旋转四棱锥
- SpringBoot 中文手册 --Part IV --27
- 字典树模板
- 安装Node.js和npm
- 特征选择(feature select)
- iOS开发中获取当前网络的ip及连接wifi时wifi的名字
- C#修改注册表
- 汉字转拼音工具类
- Android 中的Storage state
- 彻底删除kafka的topic方法
- android studio HttpURLConnection 出现握手失败