zoukankan      html  css  js  c++  java
  • 洛谷P1628合并序列【模板】(Trie+dfs)

    很久之前写的题了,当时不知道怎么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 }
  • 相关阅读:
    C# 局部函数与事件
    PHP curl_multi_strerror函数
    PHP curl_multi_setopt函数
    PHP curl_multi_select函数
    PHP curl_multi_remove_handle函数
    PHP curl_multi_init函数
    用户&权限
    HEOI2019 游记——240秒处的起死回生
    WPF 判断调用方法堆栈
    WPF 判断调用方法堆栈
  • 原文地址:https://www.cnblogs.com/lr599909928/p/12640867.html
Copyright © 2011-2022 走看看