- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
ACM春季培训主讲人:郭昊课件制作:彭文文哈尔滨理工大学ACM集训队字典树kmp
一、字典树
例1字典树我们需要将一个单词列表建出一棵单词查找树,满足:1.根结点不包含字母,除根结点外的每个都仅含一个大写英文字母;2.从根结点到某一结点,路径上经过的字母依次连起来所构成的字母序列,称为该结点对应的单词。单词列表中的每个词,都是该单词查找树某个结点所对应的单词;3.在满足上述条件下,该单词查找树的结点数最少。统计出该单词查找树的结点数目。
例1字典树输入格式
若干行单词,描述单词列表。输出格式
一个数字,表示结点数目。样例输入
A
AN
ASP
AS
ASC
ASCII
BAS
BASIC样例输出
13
建树过程RootABASICNSPCII步骤1:新建根节点,且根结点不包含字母。步骤2:向字典树,插入单词“A”,Root无A孩子节点,新建节点A步骤3:且A字母是单词“A”的尾字母,故特殊标记A步骤3:插入“AN”单词,查找Root包含A孩子节点,故向A查找是否包含N孩子节点A步骤4:A节点不包含N孩子节点,故新建N节点,由于N是单词尾节点,故特殊标记N步骤5:插入单词“ASP”,Root包含A节点,故检查A节点是否包含S节点,不包含则新建步骤6:新建S节点之后,查找S节点是否包含P节点,不包含,则新建,由于P节点是尾节点,故特殊标记P步骤7:插入单词“AS”,查找Root包含A节点,继续向下查找,A节点包含S节点,由于S节点是尾节点,故特殊标记S步骤8:插入单词“ASC”,查找Root包含A节点,继续向下查找,A节点包含S节点,继续查找C节点,没有则新建C节点C步骤9:由于C节点是单词的尾节点,故特殊标记步骤10:插入单词“ASCII”,检查到字典树第三层发现C节点无I孩子节点,故新建步骤10:第四层I节点无I孩子节点,故新建I节点,由于是尾位点,故特殊标记I步骤11:插入单词”BAS”,Root节点无B孩子节点,故新建步骤12:依次,新建A节点,新建S节点,由于S节点尾节点,故特殊标记S步骤13:插入单词“BASIC”,依次查找插入,尾节点特殊标记C总结:每次插入一个单词,从根节点开始插入,单词的第i个字母就位于第i层,且单词的第i-1个字母一定是第i个字母的孩子节点总结:并非所有的尾节点都需要特殊标记,看实际需求,需要什么,就特殊处理什么
例1字典树分析题目对这种数据结构的限制内容较多,又要满足“该单词查找树的结点数最少”,故贪心即可。即,对于树中的每个结点,它的包含相同字母的所有儿子都应当合并在一起。按照以上所有条件模拟出这棵树,统计一下其结点个数即可。
字典树字典树(又叫单词查找树、Trie树,TrieTree),构造简单,并能很好地处理和“串”相关的检索(Retrieval)问题。字典树很好地利用了串的公共前缀,节约了存储空间。字典树的插入(Insert)、删除(Delete)和查找(Find)都非常简单,用一个一重循环即可,即第i次循环找到前i个字母所对应的子树,然后进行相应的操作。
节约空间例如在现实生活中,我们需要存储很多URL(UniformResoureLocator:统一资源定位器)是WWW页的地址。大多数以“”开头,若以字典树存储,则50亿个“”只需要10个存储单位即可,而非50亿*10节省了很多空间
快速检索字典树能很好地利用串的公共前缀,节约了存储空间。同时用它来检索同样有着比较高的效率。字典树实现“串”排序(课下学习)字典树在减少无效转移方面的应用(课下学习)
例2查找生词给出N个单词组成的熟词表,以及一篇全用小写英文书写的文章,请你按最早出现的顺序写出所有不在熟词表中的生词。输入格式
第一行,一个数字N;接着N行,每行一个熟词表中的单词;接着一行,一篇文章。输出格式
若干行,每行一个生词。
例2查找生词样例输入
5
one
dollar
hundred
thousand
it
itcostsonethousandonehundredandoneyuan.样例输出
costs
and
yuan
例2查找生词分析:①枚举:先将所有熟词用一个数组记录下来。接着枚举文章中的每个单词,对于对应的单词,枚举熟词表,检查它是否已经存在,不存在则输出并且将它存到熟词表的末尾。反复操作即可。
-----最简单,时间复杂度较大。②hash:对于所有的熟词先建立映射关系。再枚举文章中的每个单词,看看是否已经被哈希了,没有则输出并为其进行哈希。
----时间复杂度低,但需要较好的hash函数。
例2查找生词分析:③对于所有熟词先建出字母树,对于所有对应单词为熟词的结点进行标记。接
您可能关注的文档
- 考研英语二图表作文写作方法模板.pdf
- 网络安全知识竞赛考试题库.pdf
- 期中测试卷(1~5单元)-2024-2025学年六年级下册数学人教版.pdf
- 河南省濮阳市2024-2025学年道德与法治九年级上册期末测试训练题(含答案).pdf
- 2024-2025学年人教版五年级下册第四周学业测试数学试卷(含答案).pdf
- 2025年人教版八年级英语下册复习:阅读理解30篇【考题猜想】(原卷版).pdf
- 2025人教版七年级英语下册单元语法讲解及专练Unit 1 Animal friends.pdf
- 解二元一次方程组及其实际应用-2024-2025学年人教版七年级数学下册同步训练(含答案).pdf
- 2024-2025学年北京版六年级下册期中素养测评数学试卷(基础卷)含答案.pdf
- 2024-2025学年贵州省六盘水市盘州市人教版四年级上册期末考试数学试卷.pdf
- 2024-2025学年人教版八年级数学下册同步训练:矩形(3个知识点+5类热点题型讲练+习题巩固)(原卷板).pdf
- 用统计图描述数据(知识盘点+4题型+2易错+好题必刷)-2024-2025学年人教版七年级数学下册(含答案).pdf
- 2024统编版七年级道德与法治下册期末复习考点知识问答式复习提纲.pdf
- 2024统编版七年级下册道德与法治期中复习:第1~2单元+期中学情调研试卷(共3套,含答案).pdf
- 2024-2025学年冀教版六年级下册期中素养测评数学试卷(基础卷)含答案.pdf
- 2024-2025学年人教版八年级数学下册同步训练:正方形(3个知识点+5类热点题型+习题巩固)解析版.pdf
- 2024-2025学年人教版八年级数学下册 第十六章 二次根式 全章题型总结(原卷版).pdf
- 2024-2025学年人教版八年级数学下册同步训练:构造三角形中位线的常见方法(解析版).pdf
- 2024-2025学年外研版七年级英语下学期考点突破:阅读理解15篇(含答案解析).pdf
- 2024统编版七年级历史下册期末复习知识点提纲默写练习版(含答案).pdf
文档评论(0)