字典树的应用。
数据结构第一次课的作业竟然就需要用到树了!!!这不科学啊。赶紧来熟悉一下字典树。
空间开销太大T T
#include<cstdio>
#include<cstring>
const int MAXN=26;
struct Trie
{
Trie *next[MAXN];
int v;
};
Trie *root=new Trie();
void creatTrie(char *s)
{
int len=strlen(s);
Trie *p=root,*q;
for(int i=0;i<len;i++)
{
int index=s[i]-'a';
if(p->next[index]==NULL)
{
q=new Trie();
q->v=1;
p->next[index]=q;
p=q;
}
else
{
p->next[index]->v++;
p=p->next[index];
}
}
}
int findTrie(char *s)
{
int len=strlen(s);
Trie *p=root;
for(int i=0;i<len;i++)
{
int index=s[i]-'a';
p=p->next[index];
if(p==NULL)
return 0;
}
return p->v;
}
int main()
{
char temp[12];
while(gets(temp)&&temp[0]!='\0')
{
creatTrie(temp);
}
while(scanf("%s",temp)!=EOF)
{
printf("%d\n",findTrie(temp));
}
}