码迷,mamicode.com
首页 > 其他好文 > 详细

hdu4287 字典树

时间:2015-08-12 18:24:33      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxn 10
struct trie
{
    trie *next[10];
    int sum;
    int flag;
};
trie *root;
char way[5010][10];
void init()
{
    root=(trie*)malloc(sizeof(trie));
    for(int i=2;i<10;i++)
        root->next[i]=NULL;
    root->flag=0;
    root->sum=0;
}
int check(char c)
{
    if(c>=a&&c<=c)
        return 2;
    if(c>=d&&c<=f)
        return 3;
    if(c>=g&&c<=i)
        return 4;
    if(c>=j&&c<=l)
        return 5;
    if(c>=m&&c<=o)
        return 6;
    if(c>=p&&c<=s)
        return 7;
    if(c>=t&&c<=v)
        return 8;
    return 9;
}
void insert(char *s)
{
    int i,j,len=strlen(s);
    trie *p=root,*q;
    for(i=0;i<len;i++)
    {
        int id=check(s[i]);
        if(p->next[id]==NULL)
        {
            q=(trie*)malloc(sizeof(trie));
            for(j=2;j<10;j++)
                q->next[j]=NULL;
            q->flag=q->sum=0;
            p->next[id]=q;
        }
        p=p->next[id];
        p->sum++;
        if(i==len-1)
            p->flag++;
    }
}
int find(char *s)
{
    trie *p=root;
    int i,j,len=strlen(s);
    for(i=0;i<len;i++)
    {
        int id=s[i]-0;
        if(p->next[id]==NULL)
            return 0;
        p=p->next[id];
    }
    return p->flag;
}
void freetrie(trie *root)
{
    int i,j;
    for(i=2;i<10;i++)
    {
        if(root->next[i]!=NULL)
            freetrie(root->next[i]);
    }
    free(root);
}
int main()
{
    int i,j,t,n,m;
    char s[maxn];
    scanf("%d",&t);
    while(t--)
    {
        init();
        scanf("%d %d",&n,&m);
        for(i=0;i<n;i++)
            scanf("%s",way[i]);
        for(i=0;i<m;i++)
        {
            scanf("%s",s);
            insert(s);
        }
        for(i=0;i<n;i++)
        {
            printf("%d\n",find(way[i]));
        }
        freetrie(root);
    }
}

 

hdu4287 字典树

标签:

原文地址:http://www.cnblogs.com/sweat123/p/4724753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!