当前位置: 首页 > news >正文

Trie树(字典树)

原理:

        1. ch[p][j]:p是每个单词存到的idx索引,j是存入字符映射的数字

        2. cnt[p] 存这个单词个数

【模板】字典树 - 洛谷

#include <iostream>
#include <cstring>
using namespace std;const int N = 3e6 + 10;
int ch[N][100], idx;
int cnt[N];
char str[N];int convert(char s) { // 哈希映射if(s >= 'A' && s <= 'Z')return s - 'A';else if(s >= 'a' && s <= 'z')return s - 'a' + 26;else return s - '0' + 52;
}void insert(char s[]) {int p = 0;for(int i = 0; i < strlen(s); i ++ ) {int j = convert(s[i]);if(!ch[p][j]) ch[p][j] = ++ idx;p = ch[p][j];cnt[p] ++;}}int query(char s[]) {int p = 0;for(int i = 0; i < strlen(s); i ++ ) {int j = convert(s[i]);if(!ch[p][j]) return 0;p = ch[p][j];}return cnt[p];
}
int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n; cin >> n;while(n -- ) {// 回归初始状态for(int i = 0; i <= idx; i ++ ) {for(int j = 0; j <= 122; j ++ ) {ch[i][j] = 0;}}for(int i = 0; i <= idx; i ++ ) {cnt[i] = 0;}idx = 0;int q, t;cin >> q >> t;for(int i = 1; i <= q; i ++ ) {cin >> str;insert(str);}for(int i = 1; i <= t; i ++ ) {cin >> str;cout << query(str) << endl;}}return 0;
}

http://www.lryc.cn/news/220103.html

相关文章:

  • 华为政企网络安全产品集
  • 02-Sping事务实现之声明式事务基于XML的实现方式
  • 桶装水订水系统水厂送水小程序开发;
  • png或jpg等图片文件转ico图标文件,格式在线转换
  • 操作系统——对文件的 基本操作(王道视频p65)
  • 中海达守护电力人员作业安全
  • 想学计算机编程从什么学起?零基础如何自学计算机编程?中文编程开发语言工具箱之渐变标签组构件
  • 中国人民大学与加拿大女王大学金融硕士——一把开启未来金融世界的金钥匙
  • MVC、MVP、MVVM区别
  • 【Kotlin精简】第7章 泛型
  • ElasticSearch与Lucene是什么关系?Lucene又是什么?
  • 【算法练习Day40】打家劫舍打家劫舍 II打家劫舍 III
  • 双十一运动健身好物推荐,这几款健身好物一定不要错过!
  • Angular异步数据流编程
  • 古典舞学习的独舞与群舞,古典舞的成品舞蹈教学大全
  • 听GPT 讲Rust源代码--library/std(16)
  • 计算机编程软件编程基础知识,中文编程工具下载分享
  • 微信小程序里怎么添加砍价活动
  • 如何在Python爬虫中使用IP代理以避免反爬虫机制
  • 干货丨Linux终端常见用法总结(收藏)
  • 【RealTek sdk-3.4.14b】RTL8197FH-VG+RTL8812FR实现实现Host 网络和Guest 网络隔离以及各个连接终端间隔离功能
  • 【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现
  • 3.22每日一题(二重积分求平面区域面积)
  • Hadoop环境搭建
  • SpringBoot_mybatis-plus使用json字段
  • 牛客出bug(华为机试HJ71)
  • 第十一章 日志管理
  • 灯串跨境外贸出口欧美CE认证和UL588报告周期解析
  • 大数据中的分布式文件系统MapReduce的选择题
  • storm安装手册及笔记