您的位置:首页 > 其它

trie模板 -hdu1251

2015-09-03 17:13 417 查看
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
struct trie
{
int cnt=0;
trie *next[26];
trie(){memset(next,NULL,sizeof(next));}
}s;
void add(char *str)
{
trie *Tree=&s;
s.cnt++;
for (int pos=0;pos<strlen(str);pos++)
{
if (Tree->next[str[pos]-'a']==NULL)
Tree->next[str[pos]-'a']=new trie();
Tree=Tree->next[str[pos]-'a'];
Tree->cnt++;
}
}
int query(char *str)
{
trie *Tree=&s;
for (int pos=0;pos<strlen(str);pos++)
{
if (Tree->next[str[pos]-'a']==NULL) return 0;
Tree=Tree->next[str[pos]-'a'];
}
return Tree->cnt;
}
int main(int argc, const char * argv[])
{
char str[11];
while (gets(str)&&str[0]!='\0')
add(str);
while (scanf("%s",str)==1)
printf("%d\n",query(str));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: