#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct node
{
int s,id;
node *next[28];
node():s(0),id(-1)
{
memset(next,0,sizeof(next));
}
};
node *root = new node;
void Insert(char *str,int id)
{
int l=strlen(str);
int i;
node *p,*t=root;
for(i=0;i<l;i++)
{
if(t->next[str[i]-'a']==0)
{
p=new node;
t->next[str[i]-'a']=p;
t=t->next[str[i]-'a'];
}
else
{
t=t->next[str[i]-'a'];
}
if(t->id!=id)
{
t->s++;
t->id=id;
}
}
}
int Find(char *str)
{
node *t=root;
int l=strlen(str);
int i;
for(i=0;i<l;i++)
{
t=t->next[str[i]-'a'];
if(!t)
return 0;
}
return t->s;
}
int main()
{
int p;
scanf("%d",&p);
int i,j;
char str[50];
for(i=0;i<p;i++)
{
scanf("%s",str);
int l=strlen(str);
for(j=0;j<l;j++)
Insert(str+j,i);
}
scanf("%d",&p);
for(i=0;i<p;i++)
{
scanf("%s",str);
int s=Find(str);
printf("%d\n",s);
}
return 0;
}
hdu 2846
最新推荐文章于 2019-07-23 14:33:44 发布