![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字典树
文章平均质量分 75
Sleppypot
困难的路越走越容易,容易的路越走越难。
展开
-
动态建树之——一个单词是否在其他单词中以前缀的形式存在
题目:poj1056 题意:判断一个单词是否在其他单词中以前缀的形式存在 解答:建立字典树。在读到单词末尾的时候如果发现它已经有了,就返回false #include #include #include #include #include using namespace std; const int sonnum = 3; int ok = 1; struct Trie { int原创 2016-08-15 14:38:06 · 433 阅读 · 0 评论 -
动态建树之——出现了几次的单词有几个
题目:poj2945 题意:计算出现了1~n次的单词各有几次 解答:字典树。建立之后dfs查找 注意:mle:树的节点数目定义太大了。因为题目只有ACGT四个字母所以节点数定义为4就足够 map定义啥的不能写在函数外面 #include #include #include #include #include using namespace std; const i原创 2016-08-15 14:33:43 · 293 阅读 · 0 评论 -
动态建树之——寻找最长公共前缀
题目:poj2001 题意:寻找最长公共前缀 解答:大概是最简单的字典树的建立、查找 #include #include #include #include #include const int sonnum = 26,base = 'a'; char a[10010][26]; using namespace std; struct Trie//定义字典树的节点 { int num原创 2016-08-12 16:07:17 · 331 阅读 · 0 评论 -
动态建树之——查字典
题目:poj2503 题意:给几个单词的意思,再给几个单词,查字典~ 解答:字典树咯(注意节点定义,每个节点定义一个字符数组) 注意:空行停止!!! #include #include #include #include using namespace std; const int sonnum = 26,base = 'a'; struct Trie { int num;原创 2016-08-12 20:46:48 · 379 阅读 · 0 评论 -
动态建树之——寻找前缀是否是其他字符串
题目:hdu1671 题意:寻找一个号码是否有前缀跟其他的号码一样 解答:动态建字典树(在hdu上能过,在poj上不能过) 注意:每次加入字符串的时候边加入要边判断!!! 每建完一个树都要释放内存!!! #include #include #include #include #include using namespace std; const int son原创 2016-08-16 21:03:42 · 328 阅读 · 0 评论 -
静态建树之——寻找前缀是否是其他字符串
题目:poj3630 题意:寻找前缀是否是其他字符串 解答: 静态建树! 这个静态的树怎么建立的呢? 1、定义一个结构体作为节点,并且定义节点数组表示这课树上的所有节点。该结构体的一个变量terminal表示该节点是否是一个字符串的最后一个。另一个节点son[10]表示该节点的儿子们的指针。 2、建立一棵树,bo原创 2016-08-17 14:05:27 · 306 阅读 · 0 评论 -
动态建树加深搜之——模仿手机九键输入法
题目:poj1451 题意:给你一个词语出现次数的表,然后给你一个输入的数字串,每一步输出它最可能出现的单词。没有了就输出一个东西。 解答:建一个字典树,然后深度遍历这课树。每遍历一步都要记录下当前的字符串。最后输出。要记录当前位置最大值。如果该步没有更新过最大值说明这一步找不到字母了。 用一个str数组记录当前的串。用k记录搜到多长了。注意回溯!还有,不管更新不更新答原创 2016-08-23 19:16:11 · 1558 阅读 · 0 评论