#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
struct Node{
int sum;
Node* code[26];
Node(){
sum=0;
int i;
for(i=0;i<26;i++)
code[i]=NULL;
}
}node;
void build(char s[])
{
Node* c=&node;
for(int i=0;s[i];i++)
{
int a=s[i]-'a';
if(c->code[a]==NULL)
c->code[a]=new Node;
c=c->code[a];
c->sum++;
}
}
int Find(char s[])
{
Node* c=&node;
for(int i=0;s[i];i++)
{
int a=s[i]-'a';
if(c->code[a]==NULL)
return 0;
c=c->code[a];
}
return c->sum;
}
int main()
{
int n,m;
char s[26];
scanf("%d",&n);
for(n;n--;)
{
scanf("%s",s);
build(s);
}
scanf("%d",&m);
for(m;m--;)
{
scanf("%s",s);
printf("%d\n",Find(s));
}
return 0;
}
hihocoder #1014 trie 树
最新推荐文章于 2018-04-07 17:54:57 发布