trie树魔板

来补个坑,复习复习

#include<cstdio>
#include<iostream>
using namespace std;
int n;
int son[100005][35];
bool pd[100005];
int edge=0;
int ans;
int main()
{
    cin>>n;
    string s;
    for(int i=1;i<=n;i++)
    {
    //scanf("%s",&s);	
    cin>>s;	
    int now=0;	
    //cout<<s.length();
    for(int i=0;i<s.length();i++)	
    {
        if(!son[now][s[i]-'a'])
        {
            edge++;
            son[now][s[i]-'a']=edge;
        }
        now=son[now][s[i]-'a'];	
    }
    pd[now]=1;			
    } 
    while(cin>>s)
    {
        int now=0;
        int k=0;
        for(int i=0;i<s.length();i++)
        {
            now=son[now][s[i]-'a'];
            if(!now)
            {
                ans++;
                k=1;
                break;
            }
        }
        if(!pd[now]&&!k)ans++;
    }
    cout<<ans;
    return 0;
}

    原文作者:Trie树
    原文地址: https://blog.csdn.net/Richard__Luan/article/details/82806787
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞