您的位置:首页 > 其它

HDU 1251 统计难题(字典树)

2013-12-03 19:20 399 查看
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1251
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define LED struct node
struct node
{
int n;
struct node *next[26];
};
struct node *root;
struct node *build()
{
int i;
struct node *p;
p=(struct node *)malloc(sizeof(LED));
for(i=0;i<26;i++)
p->next[i]=NULL;
p->n=0;
return p;
}
void insert(char *s)
{
struct node *p;
p=root;
int l=strlen(s),i;
if(l==0)  return;
for(i=0;i<l;i++)
{
if(p->next[s[i]-'a']!=NULL)
{
p=p->next[s[i]-'a'];
p->n++;
}
else
{
p->next[s[i]-'a']=build();
p=p->next[s[i]-'a'];
p->n++;
}
}
}
int search(char *s)
{
struct node *p;
p=root;
int l=strlen(s),i;
if(l==0)  return 0;
for(i=0;i<l;i++)
{
if(p->next[s[i]-'a']!=NULL)
p=p->next[s[i]-'a'];
else
return 0;
}
return p->n;
}
int main()
{
root=build();
char s[15],ss[15];
while(gets(ss),strcmp(ss,"")!=0)
insert(ss);
while(gets(s)!=0)
printf("%d\n",search(s));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: