特性Trie树属于树形结构,查询效率比红黑树和哈希表都要快。假设有这么一种应用场景:有若干个英文单词,需要快速查找某个单词是否存在于字典中。使用Trie时先从根节点开始查找,直至匹配到给出字符串的最后一个节点。在建立字典树结构时,预先把带有相同前缀的单词合并在同一节点,直至两个单词的某一个字母不同,...
分类:
其他好文 时间:
2014-08-22 00:16:35
阅读次数:
203
基本性质可以归纳为:1. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。2. 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。3. 每个节点的所有子节点包含的字符都不相同。 实现: /*Name: Trie树的基本实现 Author: MaiK Description:...
分类:
其他好文 时间:
2014-08-20 17:52:52
阅读次数:
226
UVA 1556 - Disk Tree
题目链接
题意:给定一些字符串,表示目录,要求输出整体目录的结构
思路:跟Trie树差不多,只不过是每个结点存放的是一个字符串,利用map映射即可
代码:
#include
#include
#include
#include
#include
#include
#include
using namespace ...
分类:
其他好文 时间:
2014-08-20 16:27:22
阅读次数:
167
typedef struct node{ int count; struct node *next[MAX];}Trie;Trie *Newnode()//建立结点&初始化a{ int i; Trie *T; T = (Trie *)malloc(sizeof(Trie...
分类:
其他好文 时间:
2014-08-19 20:39:25
阅读次数:
169
UVA 1519 - Dictionary Size
题目链接
题意:有一个字典,里面包含一些词,要求组合新词,新词必须来自原字典,或者由原字典的字符串的非空前缀和非空后缀组成,问一共能组成多少个新词
思路:建Trie树,可以求出不同的前缀和后缀个数,然后相乘,这样做会有一部分重复的
比如Aaaa,aaaA的情况,就重复了,去重的方法可以推理出来
假设前缀A后面有x个a,后缀...
分类:
其他好文 时间:
2014-08-19 01:00:53
阅读次数:
207
思路:这题和wikioi 1306一样,也都是求的不同子串的个数,但是wikioi 时间比较长,然后用Trie树就过了。但是我用那个代码提交这题的时候就WA了,比较晕……因为这题有多组样例,所以超了点时间。
所以这题当然就是用后缀数组做的啦!
算法分析:
每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffi...
分类:
其他好文 时间:
2014-08-13 19:09:17
阅读次数:
221
51CTO学院,在软考备考季特别整理了"2014年软考程序员-常考知识点复习笔记【汇总篇】",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧!查看汇总:2014年软考程序员-常考知识点复习笔记【汇总篇】B树、B-树、B+树、B*树、红黑树和trie树(1)B..
分类:
其他好文 时间:
2014-08-13 15:06:27
阅读次数:
229
简介字符串的处理几乎无处不在,常用的字符串算法有KMP、扩展KMP、Trie树、AC自动机、Manacher、哈希、SA、SAM等。Knuth-Morris-Pratt 算法给你两个字符串AB,询问B串是否是A串的子串(A串是否包含B串)。可以枚举从A串的什么位置起开始与B匹配,然后验证是否匹配。假...
分类:
其他好文 时间:
2014-08-13 12:52:06
阅读次数:
291
Remember the Word
题目:链接
题意:给出一个有S个不同单词组成的字典和一个长字符串。把这个字符串分解成若干个单词的连接(单词可以重复使用),有多少种方法?
思路:令d[i]表示从字符i开始的字符串(后缀s[i..L])的分解数,这d[i] = sum{d(i+len(x)) | 单词x是其前缀}。然后将所有单词建成一个Trie树,就可以将搜索单词的复杂度降低...
分类:
其他好文 时间:
2014-08-12 22:11:14
阅读次数:
291
Trie树模板
#include
using namespace std;
struct Trie
{
int word[100020<<2][26];
int ex[100020<<2];
int sz;
Trie()
{
sz=1;
memset(word,0,sizeof(word));
memset(...
分类:
其他好文 时间:
2014-08-12 17:15:24
阅读次数:
180