洛谷P1628合并序列【模板】(Trie+dfs)
2024-10-19 03:40:37
很久之前写的题了,当时不知道怎么dfs所以卡了一段时间,^_^
题解:由于题目给了一大堆字符串,所以首先考虑应该可以建树,之后找到T所在的位置,对T所在的位置dfs就行了
代码:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <algorithm>
6 #include <stack>
7 #include <queue>
8 #include <vector>
9 #include <map>
10 #include <set>
11 #include <unordered_set>
12 #include <unordered_map>
13 #define ll long long
14 #define fi first
15 #define se second
16 #define pb push_back
17 #define me memset
18 const int N = 1e6 + 10;
19 const int mod = 1e9 + 7;
20 using namespace std;
21 typedef pair<int,int> PII;
22 typedef pair<long,long> PLL;
23
24 int n,idx=0,x=0;
25 int son[N][26],cnt[N];
26 char str[110],tmp[110];
27 char ans[110];
28
29 void insert(char str[]){ //建树
30 int p=0;
31 for(int i=0;str[i];++i){
32 int u=str[i]-'a';
33 if(!son[p][u]) son[p][u]=++idx;
34 p=son[p][u];
35 }
36 cnt[p]++;
37 }
38
39 void dfs(int u){ //dfs查找
40 while(cnt[u]--){
41 cout<<tmp;
42 for(int i=0;i<x;i++) cout<<ans[i];
43 cout<<endl;
44 }
45 for(int i=0;i<26;i++){
46 if(son[u][i]){
47 int r=u;
48 u=son[u][i];
49 ans[x++]=i+'a';
50 dfs(u);
51 u=r;
52 x--;
53 }
54 }
55 }
56
57 int main(){
58 ios::sync_with_stdio(false);
59 cin>>n;
60 while(n--){
61 cin>>str;
62 insert(str);
63 }
64 cin>>tmp;
65 int p=0;
66 for(int i=0;tmp[i];i++){
67 int u=tmp[i]-'a';
68 p=son[p][u];
69 }
70 dfs(p);
71 return 0;
72 }
最新文章
- JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)
- BZOJ 1018 线段树维护图连通性
- HTML页面弹出自定义对话框带遮蔽罩(使用JavaScript)
- Java 模板引擎 jetbrick-template
- Javascript的一种代码结构方式——插件式
- 神奇的Noip模拟试题一试 2 排队
- 移动web屏幕适配方案
- JavaWeb学习笔记-使用HttpSession对象跟踪会话
- echarts 角度渐变环形图心得
- JDK开发环境搭建及环境变量配置
- Python学习笔记-数字类型
- SpringBoot返回json和xml
- socketserver 模块并发
- Python基础知识(Basic knowledge)
- [Cubieboard] 在 Cubieboard 上安装 Node.js 和 npm
- gulp-jshint使用说明
- MySQL用户授权 和 bin-log日志 详解和实战
- struts2对拦截器使用带实例
- centos下安装docker最新版教程
- linux源码安装php7.2.0
热门文章
- 根据业务摸索出的一个selenium代码模版(python)
- 【Oracle】想查询相关的v$视图,但是提示表或视图不存在解决办法
- 浏览器performance工具介绍及内存问题表现与监控内存的几种方式
- MyBatis初级实战之四:druid多数据源
- Mysql--由prepared sql statement引发的问题
- 并发条件队列之Condition 精讲
- SuperUpdate.sh 一键更换Linux软件源脚本
- Maven 知识点总结以及解决jar报冲突的几种方法
- Flutter--Flutter开发环境搭建
- 关于Java客户端连接虚拟机中的Kafka时,无法发送、接收消息的问题