特性Trie树属于树形结构,查询效率比红黑树和哈希表都要快。假设有这么一种应用场景:有若干个英文单词,需要快速查找某个单词是否存在于字典中。使用Trie时先从根节点开始查找,直至匹配到给出字符串的最后一个节点。在建立字典树结构时,预先把带有相同前缀的单词合并在同一节点,直至两个单词的某一个字母不同,...
分类:
其他好文 时间:
2014-08-22 00:16:35
阅读次数:
203
统计难题Problem DescriptionIgnatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它...
分类:
其他好文 时间:
2014-08-20 22:21:03
阅读次数:
292
基本性质可以归纳为: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
Word Segmenting
Time Limit: 5 Seconds
Memory Limit: 32768 KB Special Judge
One key technology in Chinese search engine is Word Segmenting, which is more difficult than English Word Segmenting...
分类:
其他好文 时间:
2014-08-17 17:06:42
阅读次数:
364
1401 - Remember the WordTime limit: 3.000 secondsNeal is very curious about combinatorial problems, and now here comes a problem about words. Knowing ...
分类:
其他好文 时间:
2014-08-17 16:44:52
阅读次数:
315
首先建立Trie和失败指针,然后你会发现对于每个节点 i 匹配AGCT时只有以下几种情况:
i 节点有关于当前字符的儿子节点 j 且安全,则i 到 j找到一条长度为 1的路。
i 节点有关于当前字符的儿子节点 j 且 不安全,则i 到 j没有路。
i 节点没有关于当前字符的儿子节点
但是能通过失败指针找到一个安全的节点j,那么 i 到 j 找到一条长度为1的路。
关于节点安全的定义:
...
分类:
其他好文 时间:
2014-08-17 15:36:52
阅读次数:
361