HDU 1251 统计难题

来源:互联网 发布:今日头条个人数据 编辑:程序博客网 时间:2024/06/05 14:36

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1251

题解:

字典树模版题

代码:

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define met(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3f;const int maxn = 26;struct Tire{    Tire *next[maxn];    int cnt;    Tire(){        cnt=0;        for(int i=0;i<maxn;i++)            next[i]=NULL;    }    //    初始化}root;char s[maxn];void create(char *s){    int len=strlen(s);    Tire *p=&root;    for(int i=0;i<len;i++)    {        int pos=s[i]-'a';        if(p->next[pos]==NULL)            p->next[pos]=new Tire();        //        如果为空,那么就新建一个        p=p->next[pos];        p->cnt++;    }}int search(char *s){    int len=strlen(s);    Tire *p=&root;    for(int i=0;i<len;i++)    {        int pos=s[i]-'a';        if(p->next[pos]==NULL)            return 0;        p=p->next[pos];    }    return p->cnt;}int main(){    char s[20];    while(gets(s))    {        if(s[0]==NULL)            break;        create(s);    }    while(gets(s))    {        printf("%d\n",search(s));    }}
原创粉丝点击