字典树trie模板+例题
模板:
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N = 1000010;
4 int trie[N][30];
5 int color[N];
6 int k = 1;
7
8 void insert_trie(char* w) {
9 int len = strlen(w);
10 int p = 0;
11 for (int i = 0; i < len; i++) {
12 int c = w[i] - 'a';
13 if (!trie[p][c]) {
14 trie[p][c] = k;
15 k++;
16 }
17 p = trie[p][c];
18 }
19 color[p] = 1;
20 }
21 bool search_trie(char* s) {
22 int len = strlen(s);
23 int p = 0;
24 for (int i = 0; i < len; i++) {
25 int c = s[i] - 'a';
26 if (!trie[p][c]) return 0;
27 p = trie[p][c];
28 }
29 return color[p];
30 }
31
32 char ch[100];
33
34 int main() {
35
36 int n, m;
37 cin >> n;
38 for (int i = 0; i < n; i++) {
39 cin >> ch;
40 insert_trie(ch);
41 }
42 cin >> m;
43 for (int i = 0; i < m; i++) {
44 cin >> ch;
45 if (search_trie(ch)) cout << "YES" << "\n";
46 else cout << "NO" << "\n";
47 }
48
49 return 0;
50 }
例题:洛谷 P2580 于是他错误的点名开始了
题目传送门:https://www.luogu.com.cn/problem/P2580
代码:
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int MAXN_NODE = 1000010;
4 const int MAXN_ZM = 30;
5 int trie[MAXN_NODE][MAXN_ZM];
6 int color[MAXN_NODE];
7 int k = 1;
8
9 void insert_trie(char* w) {
10 int len = strlen(w);
11 int p = 0;
12 for (int i = 0; i < len; i++) {
13 int c = w[i] - 'a';
14 if (!trie[p][c]) {
15 trie[p][c] = k;
16 k++;
17 }
18 p = trie[p][c];
19 }
20 color[p] = 1;
21 }
22 int search_trie(char* s) {
23 int len = strlen(s);
24 int p = 0;
25 for (int i = 0; i < len; i++) {
26 int c = s[i] - 'a';
27 if (trie[p][c]) {
28 p = trie[p][c];
29 }
30 else return 3;
31 }
32 if (color[p] == 1) {
33 color[p]++;
34 return 1;
35 }
36 else if (color[p] > 1) {
37 return 2;
38 }
39 }
40
41 char ch[100];
42
43 int main() {
44
45 int n, m;
46 cin >> n;
47 for (int i = 0; i < n; i++) {
48 cin >> ch;
49 insert_trie(ch);
50 }
51 cin >> m;
52 for (int i = 0; i < m; i++) {
53 cin >> ch;
54 int hh = search_trie(ch);
55 if (hh == 1) {
56 cout << "OK" << "\n";
57 }
58 else if(hh == 2) {
59 cout << "REPEAT" << "\n";
60 }
61 else {
62 cout << "WRONG" << "\n";
63 }
64 }
65
66 return 0;
67 }
永远热爱,永远向着光。
分类:
trie树
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?