hihocoder_1014: Trie树(Trie树模板题)

时间:2021-04-11 20:45:52

题目链接

#include<bits/stdc++.h>
using namespace std;
const int L=12;

struct T
{
	int num;
	T* next[26];
	T()
	{
		num=0;
		int i;
		for(int i=0;i<26;i++)
			next[i]=NULL;
	}
}t;

void insert(char str[])
{
	T* p=&t;
	for(int i=0;str[i];i++)
	{
		int a=str[i]-'a';
		if(p->next[a]==NULL)
			p->next[a]=new T;
		p=p->next[a];
		p->num++;
	}
}
int find(char str[])
{
	T* p=&t;
	for(int i=0;str[i];i++)
	{
		int a=str[i]-'a';
		if(p->next[a]==NULL)
			return 0;
		p=p->next[a];
	}
	return p->num;
}

int main()
{
	int n,m;
	char str[L];
	scanf("%d",&n);
	while(n--)
		scanf("%s",str),insert(str);
	scanf("%d",&m);
	while(m--)
		scanf("%s",str),printf("%d\n",find(str));
}