测试地址:单词查找树
做法:裸的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;
}
本文介绍了一个简单的NOI赛题解决方案——单词查找树(Trie树)。通过40多行代码实现了Trie树的插入操作,并附上了完整的C++实现代码。
621

被折叠的 条评论
为什么被折叠?



