![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字典树
leonharetd
这个作者很懒,什么都没留下…
展开
-
统计难题(hdu1251字典树)
题意:统计一某个单词为前缀的单词的数量。 思路:简单的字典树。 字典树的操作就三个一个是初始化,一个是插入建树,另一个查找。 统计前缀的数量,每读入一个单词,像树的深度遍历一样一层一层,如果节点存在该节点的出现次数+1,如果该节点没有出现,则申请一个空间,初始化该点,继续搜索 单词的查找,就是树的深度遍历,找到后输出他的出现次数 #include #include #include us原创 2013-07-26 15:18:24 · 607 阅读 · 0 评论 -
Phone List(hdu1671字典树)
题意:找单词中看是否存在一个单词是另一个的前缀,静态建树 思路:字典树 单词存在前缀有两种 1.abc存在,我们要查找abcd,那样只要找标记即可,即前缀已经存在。 2.abcd存在,我们要找abc,那样就是插入的单词的结尾在字典树中是存在的,即前缀不存在 所以在插入过程中就判断前缀是否存在 #include #include #include using namespace std;原创 2013-07-26 16:30:53 · 586 阅读 · 0 评论 -
Immediate Decodability(hdu1305)
题意:找到一堆单词中是否存在单词是另一个单词的前缀 思路:字典树 这里要做一个标记,标记搜到的单词是否是一个完结的单词,比如字典树中有个单词abc,然后你搜abcd,abc是abcd的前缀但是abc没有任何标记,所以给个标记在搜到abc时发现标记为true,说明有前缀存在,再插入时,插入的最后将最后一个节点标记为true。 #include #include #include using n原创 2013-07-26 15:59:09 · 551 阅读 · 0 评论 -
单词数(hdu2072字典树)
题意:找有多少种不同的单词 思路:字典树 每次插入一个单词都应find函数查找一遍,看是否存在,如果不存在sum++最后输出sum即可 #include #include #include using namespace std; struct Trie { bool flag; struct Trie * child[26]; }Tri[8000000]; int all原创 2013-07-26 16:51:07 · 650 阅读 · 0 评论 -
Hat’s Words(hdu1247字典树)
题意:查找单词看有没有单词是另两个的组合而成 思路:字典树,先建好树,然后在搜索,搜索时将每个单词都不同分割暴力搜索 不能边插便问,因为顺序是随即的,有可能漏,如a ,ahat,hat这样ahat就漏掉了,所以只能全部建树然后从头遍历到尾 实质还是查单词,只不过多查了几个而已 #include #include #include using namespace std; struct T原创 2013-08-09 09:21:33 · 681 阅读 · 0 评论 -
What Are You Talking About(hdu1075字典树)
题意:给你每个火星文的翻译,再给你一句话然后将他翻译过来,标点不算,如果没找到就按照原文翻译 思路:字典树,每读一个单词检查字典树看是否存在,如果存在就将译文输出,标点照常输出,不存在就原文输出 1.判断单词是否存在,需要标记每个单词是否完结,否则会出现前缀 2.用结构体保存两个字符串,译文在查找串的末尾节点整体保存。方便查找,一旦找到直接输出 代码: #include #include原创 2013-08-09 08:34:27 · 580 阅读 · 0 评论 -
Babelfish(poj2503字符串处理)
题意:给你每个单词对应的意思,再输入一个单词,说出他的意思,如果单词不存在输出eh 思路:hash表保存单词,用另一个单词当做键值,实现快速查找 #include #include #include #include using namespace std; struct str { char s[12]; char s_str[12]; }Node; vector v[10原创 2013-11-26 16:57:59 · 926 阅读 · 0 评论