hdu 1251 统计难题(字典树)

来源:互联网 发布:网络电视港澳台的apk 编辑:程序博客网 时间:2024/06/10 23:47


hdu 1251 统计难题

试个指针实现的


#include<stdio.h>#include<string.h>#include<stdlib.h>struct node{    node *next[26];    int val;};node *root;int getid(char c) {return c-'a';}void insert(char *s){    int len=(int)strlen(s);    node *pre=root,*next;    for(int i=0;i<len;i++)    {        int id=getid(s[i]);        next=pre->next[id];        if(!next)        {            next=(node*)malloc(sizeof(node));            memset(next,NULL,sizeof(node));            pre->next[id]=next;        }        next->val++;        pre=next;    }}int query(char *s){    int len=(int)strlen(s);    node *pre=root,*next;    for(int i=0;i<len;i++)    {        int id=getid(s[i]);        next=pre->next[id];        if(!next) return 0;        pre=next;    }    return pre->val;}char s[12];int main(){    root=(node*)malloc(sizeof(node));    memset(root,0,sizeof(node));    while(gets(s)&&strlen(s))    {        insert(s);    }    while(gets(s))    {        printf("%d\n",query(s));    }    return 0;}


0 0
原创粉丝点击