#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ch[100000][27]; //节点编号
int noe; //字典树节点个数
int val[100000]; //节点的值 等于几说明此单词有几个
void insert(char *s)
{
int k=0,c;
int len=strlen(s);
for(int i=0;i<len;i++)
{
c=s[i]-'a';
if(!ch[k][c])
ch[k][c]=noe++;
k=ch[k][c];
}
val[k]++;
}
int query(char *s)
{
int k=0,c;
int len=strlen(s);
for(int i=0;i<len;i++)
{
c=s[i]-'a';
if(!ch[k][c])
return 0;
k=ch[k][c];
}
return val[k];
}
int main()
{
char s[10];
noe=1;
memset(ch,0,sizeof(ch));
memset(val,0,sizeof(val));
for(int i=1;i<=10;i++)
{
scanf("%s",s);
insert(s);
memset(s,0,sizeof(s));
}
for(int i=1;i<=5;i++)
{
scanf("%s",s);
int ans=query(s);
printf("%d\n",ans);
memset(s,0,sizeof(s));
}
return 0;
}
字典树
最新推荐文章于 2024-11-13 22:12:02 发布