hiho 1014 trie树

来源:互联网 发布:python ruby 哪个好 编辑:程序博客网 时间:2024/06/08 02:15
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+5;struct node{    int next[26];    int cnt;    void init()    {        cnt=0;        memset(next,-1,sizeof(next));    }}a[maxn];int cnt;char s[15];void update(){    int now,pos;    now=pos=0;    while(s[now])    {        if(a[pos].next[s[now]-'a']==-1)        {            a[cnt].init();            a[pos].next[s[now]-'a']=cnt++;        }        pos=a[pos].next[s[now]-'a'];        a[pos].cnt++;        now++;    }}void ask(){    int now,pos;    now=pos=0;    while(s[now])    {        if(a[pos].next[s[now]-'a']==-1)        {            printf("0\n");            return;        }        pos=a[pos].next[s[now]-'a'];        now++;    }    printf("%d\n",a[pos].cnt);}int main(){    int n,m,i;    scanf("%d",&n);    cnt=1;//找了一个公共节点    a[0].init();    for(i=0;i<n;i++)    {        scanf("%s",s);        update();    }    scanf("%d",&m);    for(i=0;i<m;i++)    {        scanf("%s",s);        ask();    }    return 0;}

原创粉丝点击