字典树 - 模板

字典树的模版(模版) 字典树的模版,想学习的自己亲自把代码打一下就可以了。 立即下载
定义

字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

性质

1、根节点不包含字符,除根节点外每一个节点都只包含一个字符;
2、从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
3、每个节点的所有子节点包含的字符都不相同。

应用

1、串的快速检索
给出 n 个单词组成的熟词表,以及一篇全用小写英文书写的文章,请你按最早出现的顺序写出所有不在熟词表中的生词。可以用字典树,先把熟词建一棵树,然后读入文章进行比较,这种方法效率是比较高的。
2、串排序
给定 n 个互不相同的仅由一个单词构成的英文名,让你将他们按字典序从小到大输出。用字典树进行排序,采用数组的方式创建字典树,这棵树的每个结点的所有儿子很显然地按照其字母大小排序。对这棵树进行先序遍历即可。
3、最长公共前缀
对所有串建立字典树,对于两个串的最长公共前缀的长度即他们所在的结点的公共祖先个数,于是,问题就转化为当时公共祖先问题。

大致实现

1、从根结点开始一次搜索;
2、取得要查找关键词的第一个字母,并根据该字母选择对应的子树并转到该子树继续进行检索;
3、在相应的子树上,取得要查找关键词的第二个字母,并进一步选择对应的子树进行检索。
4、迭代
5、在某个结点处,关键词的所有字母已被取出,则读取附在该结点上的信息,即完成查找。

具体代码
struct node 
{
	int num; //如果该节点是一个单词的结尾,记录对应单词的编号
	//(这里也可以记录以该节点为前缀的出现次数)
	int next[26];//儿子节点的编号
}trie[maxn];
void insert(string str,int k) 
{
	int len=str.length(),p=0;//0为根节点
	for(int i=0;i<len;i++) 
	{
		int to=str[i]-'a';//将字符c[i]转换成值为0到25的数字,比如'a'转换为0,'b'转换为1,‘c’转换为2……
		if(trie[p].next[to]==0) //若p没有值为t的儿子
		{
			tot++; //新增一个编号为tot的节点
			trie[p].next[to]=tot; //记下p的值为t的孩子节点的编号
			p=trie[p].next[to]; //p指向新添加的节点
			trie[p].num=0; //初始化新添加的节点,将其标记为不是单词的结尾
		} 
		else p=trie[p].next[to]; //若p存在值为t的儿子,p指向该儿子,继续讨论
	} 
	trie[p].num=k; //for循环已执行完,说明第k个单词已加入,在单词结尾做上标记
}  
int find(string str) 
{
	int len=str.length(),p=0;
	for(int i=0;i<len;i++) 
	{
		int to=str[i]-'a';
		if(trie[p].next[to]==0) return 0; //当前要匹配值为t的字母,若没有则结束
		p=trie[p].next[to]; //若存在值为t的字母,则继续匹配
	} 
	return trie[p].num; //若for循环执行完毕,说明找到了需要的单词,返回其编号
}
int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
    return 0;
} 

PWM调光原理详解:为什么你的LED灯会闪烁?从硬件到软件的避坑指南 本文深入解析PWM调光原理,揭示LED灯闪烁的根本原因,并提供从硬件设计到软件算法的全面解决方案。通过分析人眼视觉暂留机制和PWM参数设置,帮助开发者避免频闪问题,提升照明质量。特别适合电子工程师和智能家居开发者参考。 阅读详情

相关推荐

雷电模拟器+Google Play服务配置全指南:从安装到定位问题解决

本文详细介绍了雷电模拟器配置Google Play服务的全流程,包括版本选择、组件安装、定位服务调试及网络问题排查。针对安卓开发者的常见挑战,提供从基础到高级的解决方案,帮助优化测试环境稳定性与定位精度。

weixin_30399821的博客 1227

字典树模板

字典树trie模板

YMWM_的博客 818

STM32寄存器级电机驱动:DRV8833 H桥与PWM调速原理

电机驱动是嵌入式控制系统的核心基础能力,其本质是微控制器通过数字信号精确控制功率器件的开关时序。理解H桥电路结构、反电动势防护机制及PWM调制原理,是实现可靠直流电机控制的前提。DRV8833作为典型双H桥驱动芯片,支持快衰减与慢衰减两种PWM调速模式,分别对应不同的电流泄放路径与动态响应特性。在STM32平台上,需结合时钟树配置、GPIO复用、定时器寄存器(PSC/ARR/CCR)精确计算,将抽象的转速需求转化为可执行的硬件操作。该技术广泛应用于智能小车、机器人关节、工业定位系统等实时运动控制场景,是掌握

weixin_42613017的博客 675

【图解算法】模板+变式——带你彻底搞懂字典树(Trie树)

  啥是字典树? 【字典树】(Trie Tree) 是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串)。 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。                                                     ——百度 · 百科 so?所以到底什么是字典树?   还好,它还有其他的名字,更能表述出它的实质: 前缀树、单词查找树 &nbs

丧心病狂Loli控的博客 2万+

IEC61850建模实战:从标准解读到ICD文件生成

本文详细介绍了IEC61850建模的实战过程,从标准解读到ICD文件生成,涵盖了变电站自动化系统的结构化数据模型设计。通过分层结构、标准服务映射和XML文件解析,帮助读者掌握电力系统智能电子设备的标准化建模方法,提升工程实施效率。

weixin_30823001的博客 415

从注册到投稿:一步步教你完成KBS期刊的在线投稿流程(最新版)

本文详细介绍了如何完成KBS期刊的在线投稿流程,从账号注册到最终提交的全过程。特别针对初次使用Elsevier投稿系统的研究者,提供最新版系统的操作指南,包括投稿要求、文件格式、作者信息管理等关键步骤,帮助研究者顺利投稿至这一人工智能领域的知名期刊。

egg99的博客 1594

【C++算法模板】字典树,超详细注释带例题讲解

字典树是快速插入和查询字符串的多叉树结构,根节点编号为0,其余节点标识路径,还可以标记单词插入的次数,边表示字符。

qq_63586399的博客 1804

论文必备 - YOLO26统计数据集中大、中、小目标数量,附完整代码和详细使用步骤

数据集是由微软开发维护的大型图像数据集。数据集标注类型对应任务包括物体检测、关键点检测、实例分割、stuff分割(没有特定形状的物体),全景分割人体关键点, 人体密度检测等。官网数据规模和样本特点数据规模大:总共包含32.8万张图像)。其中标注过的图像超过 20 万张,拥有 150 万个目标实例,数据量丰富,能够为模型训练提供充足的信息。类别丰富:包含80个目标类别和91个“stuff”类别。目标类别涵盖了日常生活中常见的各种物体,如人、动物、交通工具、生活用品等;stuff。

Limiiiing的博客 264

【字典树】模板+讲解

字典树(Trie),也称为前缀树或字典树,是一种用于存储和检索字符串的数据结构。它是一种有序树,用于保存关联数组,其中键通常是字符串。字典树的特点是能够高效地进行字符串的插入、删除和查找操作。字典树的基本思想是利用字符串的公共前缀来节省存储空间和提高查询效率。树的根节点不包含任何字符,每个节点包含一个字符,从根节点到叶节点的路径上构成一个字符串。通过沿着树的路径遍历字符,可以找到相应的字符串。总的来说,字典树是一种非常有用的数据结构,特别适用于需要高效存储和检索字符串的场景。

SY奇星的OI博客 593

Docker-Nvidia(NVIDIA Container Toolkit)

安装NVIDIA Container Toolkit工具,支持docker使用GPU。

周陽讀書 3820

Hermes Agent 安装部署完全指南

Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。

简简单单Onlinezuozuo 2618

字典树模板详解附加例题

字典树模板详解附加例题,P3879 [TJOI2010] 阅读理解,P2580 于是他错误的点名开始了, P4551 最长异或路径

m0_73557680的博客 358

Android11.0(R) MTK 平台开机logo动态替换(by logo.bin方式)

实现的效果 客户提供一张格式为 bmp 的开机logo,在 linux 环境下执行制作 logo.bin 脚本文件, apk 拷贝 logo.bin 文件替换系统原有的bin,然后重启 logo 自动更新。 原理分析 MTK 平台的充电图片和开机logo都是打包到 logo.bin 中的 对应的资源路径在源码 vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo 系统一般预制了很多分辨率文件夹,实际通过 BOOT_LOGO 来确定打包那一个

cczhengv 4585

字典树的指针模板与数组模板

第一个模板便是指针字典树的模板: #include #include #include const int MAX=26; struct Tire{ Tire *next[MAX]; int v; }; Tire *root; void createTrie(char *str) { int len = strlen(str); Trie *p = root, *q;

qq_18661257的专栏 2716

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Trie字典树——【模板】字典树

那第三个不同就要我们思考一下了:前面的cnt[i]储存的是有多少个字符串在编号为i的字符上结束,那这里问的是前缀,那我们是不是可以把cnt[i]转换成有多少个字符串经过了编号为i的字符。我们看到这道题,是不是头很晕,这题要求我们求一个字符串在一个字符串集合中有几个字符串可以满足这个字符串是它的前缀,对于还没学Trie字典树的我们是一大挑战,所以我们先从一题简单的开始。2.字典树我们需要高效的查询一个字符串,而链式前向星的查询速度为O(n+m),很容易超时。输入的字符串只含大小写字母和数字,且不含空串。

swk13306006908的博客 675

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

字典树 —— 模板习题

HDU 1251   敌兵布阵 PS:统计前缀出现次数 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 2000010; int tot, tr[maxn][30], sum[maxn]; void insert(char *s, int rt)...

Scar_Halo 293

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

01字典树的模板+例题

以前听学长讲的字典树,但是除了当时刷的字典树的题后就没怎么碰到字典树的题目了。前两天刷题的时候看别人博客看到了01字典树,便好奇的学习了一下,总的来说01字典树在解决异或问题是十分的方便。 通常是给你一个数组,问你一段连续的异或和最大是多少,正常思路贪心dp啥的都会一头雾水,但是用01字典树就能很快的解决。 01字典树主要用于解决求异或最值的问题。 原理: 01字典树和普通的字典树原理类似,只不过...

Waiting For You 454

字典树讲解+模板

字典树(讲解+模版) 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。      字典树与字典很相似,当你要查一个单词是不是在字典树中,首先看单词的第一

Manton's blog 725

hdu1251 字典树trie 模板题

//字典树模板题.题意:给一个库,每次查询,求以之为前缀的单词数量。 #include #include #include #include #include using namespace std; int tree[500000][27]; int w[500000]; //记录结点属性。 int numv=0; // 全局变量,

天羽屠龙舞 899

字典树解析与模板C++

字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 它有3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,...

卖炫迈的小男孩的博客 788
上一篇: P2580 于是他错误的点名开始了 - ( 字典树 )
下一篇: HDU - 4902 - Nice boat ( 线段树 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值