hihocoder1014 Trie树

来源:互联网 发布:如何做数据迁移 编辑:程序博客网 时间:2024/06/07 18:29

Trie树

题目传送门

模板题,思路直接按题目上的即可

贴一贴模板:

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int a[1000005][26],sum[1000005];char s[15];int n,m,k;int calc(char c){    return (c-'a');}void nsrt(char s[]){    int now=0,len=strlen(s);    for (int i=0;s[i];i++){        if (!a[now][calc(s[i])])            a[now][calc(s[i])]=++k;        now=a[now][calc(s[i])];        sum[now]++;    }}int srch(char s[]){    int now=0;    for (int i=0;s[i];i++)        if (!a[now][calc(s[i])])            return 0;        else             now=a[now][calc(s[i])];    return sum[now];}int main(){    scanf("%d",&n);    for (int i=1;i<=n;i++){        scanf("%s",s);        nsrt(s);            }    scanf("%d",&m);    for (int i=1;i<=m;i++){        scanf("%s",s);        printf("%d\n",srch(s));    }    return 0;}
原创粉丝点击