hdu 1251 统计拼图

二手tire木;

Basic应用程序

 谈到很具体的 点击打开链接

#include<cstdio>
#include<cstring>
#include<iostream>
#define max 20
using namespace std;
char  w[6];
struct node{
    bool a;
    int chile[26];
    int q;//前缀出现次数
    node(){
        q=false;
        q=0;
        memset(chile,0,sizeof(chile));
    }
}t[500000];

int sz=1;
void insert(char *w)
{
    int len=strlen(w);
    int s=0;
    for(int i=0;i<len;i++)
    {
        int y=w[i]-'a';
        if(t[s].chile[y]==0)
        {
            t[s].chile[y]=sz++;
        }
        s=t[s].chile[y];//下一个结点
        t[s].q++;
    }
    t[s].a=1;
}

int show(char *w)
{
    int len=strlen(w);
    int s=0;
    for(int i=0;i<len;i++)
    {
        int y=w[i]-'a';
        if(t[s].chile[y]==0)
            return 0;
        s=t[s].chile[y];
    }
    return t[s].q;
}
int main()
{
    char s[50];
    while(gets(s))
    {
        int len=strlen(s);
        if(len==0) break;
        insert(s);
    }
    while(gets(s))
    {
        printf("%d\n",show(s));
    }
    return 0;
}


版权声明:本文博主原创文章,博客,未经同意不得转载。

posted @ 2015-09-27 08:24  blfshiye  阅读(97)  评论(0编辑  收藏  举报