trie树是一种多叉树,广泛用于字典检索。如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。额,有点晚了,具体不写了。看代码吧。。
zoj_2876
#include<iostream> #include<cstdio> #include<string> using namespace std; bool res=false; bool f=false; class treeNode { public: bool flag;//标志这个节点形成一个词 const static int maxi=10; treeNode* next[maxi]; treeNode() { this->flag=false; for(int i=0;i<maxi;i++) next[i]=NULL; } }; class trieTree { public: treeNode* root; const static int maxi=10; trieTree() { this->root=new treeNode; } void insert(char* word) { treeNode* node=root; int i=0; while(word[i]) { int num=word[i]-'0'; if(node->next[num]!=NULL) { node=node->next[num]; if(node->flag) { res=true; } } else { node->next[num]=new treeNode; node=node->next[num]; f=true; } i++; } node->flag=true; if(!f) res=true; } bool search(char* word) { treeNode* node=root; int i=0; while(word[i]) { int num=word[i]-'0'; if(node->next[num]!=NULL) { node=node->next[num]; } else return false; i++; } if(node->flag==true) return true; else return false; } bool clear(treeNode* node) { for(int i=0;i<maxi;i++) { if(node->next[i]!=NULL) clear(node->next[i]); } if(node!=NULL) delete node; } ~trieTree() { clear(this->root); } }; int cases,m; char str[1000]; int main() { freopen("e:\\zoj\\zoj_2876.txt","r",stdin); cin>>cases; while(cases--) { trieTree trie; cin>>m; res=false; while(m--) { scanf("%s",str); f=false; trie.insert(str); } if(res) cout<<"NO"<<endl; else cout<<"YES"<<endl; //if(trie.search(str)) // cout<<str<<endl; } }
发表评论
-
图的割点tarjan---zoj_1119
2011-10-24 23:00 1231http://acm.zju.edu.cn/on ... -
BFS与双向BFS---zoj_1505
2011-10-09 17:14 1642http://acm.zju.edu.c ... -
静态treap+线段树---zoj_2112
2011-09-29 23:06 1708http://acm.zju.edu ... -
NIM博弈游戏,SG函数---zoj_3084,zoj_2083
2011-09-23 23:00 1316Nim游戏是两个人进行的游戏有如下规则: ... -
多重背包--zoj_2156
2011-09-14 11:10 864首先介绍经典的三种背包问题,0-1背包,完全 ... -
模式串匹配---KMP
2011-08-31 20:49 1277朴素的的模式串匹配算法通常要在向前移动文本指针 ... -
八数码问题(A*&&双向BFS)---zoj_1217
2011-08-30 22:13 1665题目地址:http://acm.zju.edu.cn/onli ... -
ac自动机以及它上面的DFA
2011-08-08 23:04 2479AC自动机(Aho-Corasick)主要用 ... -
二分图最大匹配(匈牙利算法)--zoj1516,1525,2223
2011-07-20 22:36 1185二分图G(E,V)将点集合V分成两个部分L,R ... -
网络最大流(EK)---zoj_1734
2011-07-19 16:34 2130网络最大流是图论中的一个典型问题,为了精确的定 ... -
位图bitmap
2011-07-13 21:08 914bitmap是一种广泛使用的数据结构,主要用在 ... -
LAC和RMQ的转化---zoj_3195
2011-07-12 22:35 1072我擦。。纠结了好久啊,从SF到TLE,先总结2 ... -
LAC的tarjan(离线)算法---zoj_1141
2011-07-08 17:52 1658LCA就不解释了,这里主要再次复习一下LC ... -
笛卡尔树以及treap---zoj_2243
2011-07-07 15:52 2838zoj_2243笛卡 ... -
线段染色,矩形切割,离散化---zoj_2301,zoj_1128
2011-06-24 22:32 1364染色问题:在一维坐标轴上(最右端为M),有N ... -
线段树---zoj_1610
2011-06-22 21:06 743线段树是一种二叉树的拓展,在线段树每个节点中 ... -
快速排序(qsort)
2011-06-16 17:03 776快速排序是一种高效的非稳定排序,它的基本思路 ... -
斐波那契散列
2011-06-16 16:38 3073斐波那契散列法其实是一种特殊的乘法散列,先来看乘法 ... -
强连通分支(scc)---tarjan
2011-06-15 16:17 1283本文大量 ... -
单源最短路径SPFA---zoj3146
2011-06-09 15:25 940针对Bellman-Ford算法效率比较低 ...
相关推荐
marisa_trie-0.7.7-cp310-cp310-win_amd64
资源分类:Python库 所属语言:Python 资源全名:hat_trie_python-0.6.0-cp36-cp36m-win32.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源来自pypi官网,解压后可用。 资源全名:marisa_trie-0.7.6-cp38-cp38-win32.whl
marisa_trie-0.7.7-cp38-cp38-win_amd64
marisa_trie-0.7.7-pp37-pypy37_pp73-win_amd64
marisa_trie-0.7.7-cp37-cp37m-win32
marisa_trie-0.7.5-cp35-cp35m-win_amd64
marisa_trie-0.7.5-cp27-cp27m-win_amd64
marisa_trie-0.7.5-cp27-cp27m-win32
marisa_trie-0.7.7-cp39-cp39-win_amd64
marisa_trie-0.7.7-cp37-cp37m-win_amd64
marisa_trie-0.7.5-cp36-cp36m-win_amd64
marisa_trie-0.7.5-cp34-cp34m-win_amd64
marisa_trie-0.7.5-cp34-cp34m-win32
marisa_trie-0.7.7-cp38-cp38-win32
...关于string的小结 kmp extend_kmp ac+trie 后缀数组
marisa_trie-0.7.7-cp39-cp39-win32
marisa_trie-0.7.7-cp310-cp310-win32
marisa_trie-0.7.5-cp36-cp36m-win32