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;
}
#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;
}
相关文章推荐
- hdu 3397(区间合并)
- Hybrid App
- #牛客#代码实现:字符串的匹配、字符串的交错组成、纸牌博弈、表达式组合
- 消除: warning C4996: 'sprintf': This function or variable may be unsafe. Consider 的方法
- UITextFiledView页面之间的相互传值
- Tomcat - JNDI 配置
- 求子数组的最大和
- Unity3d-Socket之龙一编年史network.dll分析(2)-> CNetLogger
- 条款03 use const whenever possible
- ESB-Mule-demo-实例
- Unity3d-Socket之龙一编年史network.dll分析(2)-> CNetLogger
- LSM树以及在hbase中的应用
- NOIP 马拦过河卒
- bzoj2594
- 用了17年的Google Logo大改了
- hdu1060 Leftmost Digit
- Android开发之自定义控件与属性动画Animation的结合使用
- UvaLive 3709 Hard Life(最大密度子图)
- Schema约束
- bzoj2594