测试地址:单词查找树
做法:裸的trie树,还只有插入操作,没想到NOI也有那么水的题……40多行解决问题。
以下是本人代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int tot=0,rt;
struct trie
{
int ch[26];
}tr[100010];
char s[110];
void newnode(int &v)
{
v=++tot;
for(int i=0;i<26;i++)
tr[v].ch[i]=0;
}
void insert()
{
int x=rt,len=strlen(s),i=0;
while(i<len)
{
if (tr[x].ch[s[i]-'A']==0) newnode(tr[x].ch[s[i]-'A']);
x=tr[x].ch[s[i]-'A'];
i++;
}
}
int main()
{
newnode(rt);
while(scanf("%s",s)!=EOF)
{
insert();
}
printf("%d\n",tot);
return 0;
}