博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
trie树(字典树)实现 C++
阅读量:6587 次
发布时间:2019-06-24

本文共 1091 字,大约阅读时间需要 3 分钟。

#include 
#include
#include
#include
using namespace std;struct TrieNode{ vector
next; bool end; int cnt; TrieNode():end(0),cnt(0){}};TrieNode *root=new TrieNode();map
table;void build(string &str){ TrieNode *p=root; for(unsigned int x:str) { if(x+1>p->next.size()) p->next.resize(x+1); if(p->next[x]==NULL) { TrieNode* s=new TrieNode(); p->next[x]=s; } p=p->next[x]; } p->end=true; p->cnt++;}void searchAllword(TrieNode *p,string word){ if(p->end==true) table[word]=p->cnt; for(unsigned int i=0;i
next.size();++i) { TrieNode *xp=p->next[i]; if(xp) searchAllword(xp,word+(char)i); }}int search(string &str){ TrieNode *p=root; for(unsigned int x:str) { if(x>=p->next.size()||p->next[x]==NULL) return 0; else p=p->next[x]; } return p->cnt;}void disp(){ for(auto x:table) cout<
<<" "<
<
>n; while(n--) { cin>>str; build(str); } cout<<"input word number that you want to search: "; cin>>n; while(n--) { cin>>str; cout<
<<" : "<
<

转载于:https://www.cnblogs.com/xLester/p/7570272.html

你可能感兴趣的文章
Spring cloud配置客户端
查看>>
Android API中文文档(111) —— MailTo
查看>>
thinkphp 3.2 增加每页显示条数
查看>>
oracle日常简单数据备份与还原
查看>>
Quartz原理
查看>>
控制namenode检查点发生的频率
查看>>
2、递归遍历文件夹下每一个文件
查看>>
解决activity加上Theme.Translucent.NoTitleBar 页面跳转显示桌面
查看>>
php类库
查看>>
Linux线程
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
查看>>
MySQL数据库的优化(二)
查看>>
Deepin OS和WIN7双启动 花屏原因一例
查看>>
给大家推荐一个免费下载名称读写ntfs软件的地方
查看>>
突然停电或死机导致没保存的文件怎么找回
查看>>
kudu
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
maven 添加阿里云maven镜像
查看>>
对向量、矩阵求导
查看>>