HDU 1251 字典树

来源:互联网 发布:linux 同时连接内外网 编辑:程序博客网 时间:2024/05/16 08:04

 

字典树  重点在建树的过程

 

#include<stdio.h>#include<string.h>#include<stdlib.h>struct dictree{   struct dictree*child[26];   int n;};struct dictree *root;void insert(char *source){     int len,i,j;     struct dictree *cur,*newnode;     len=strlen(source);     if(len==0) return ;     cur=root;     for(i=0;i<len;i++)     {        if(cur->child[source[i]-'a']!=0)        {           cur=cur->child[source[i]-'a'];           cur->n=cur->n+1;        }        else        {            newnode=(struct dictree *)malloc(sizeof(struct dictree));            for(j=0;j<26;j++)            newnode->child[j]=0;            cur->child[source[i]-'a']=newnode;            cur=newnode;            cur->n=1;        }     }}int find(char *source){    int i,len;    struct dictree *cur;    len=strlen(source);    if(len==0) return 0;    cur=root;    for(i=0;i<len;i++)    {      if(cur->child[source[i]-'a']!=0)        cur=cur->child[source[i]-'a'];      else         return 0;    }    return cur->n;}int main(){    char tmp[11];    int i,j;    root=(struct dictree *)malloc(sizeof(struct dictree));    for(i=0;i<26;i++)      root->child[i]=0;    while(gets(tmp)&&strlen(tmp)!=0)        insert(tmp);    while(scanf("%s",tmp)!=EOF)    {        i=find(tmp);        printf("%d\n",i);    }    return 0;}


 

原创粉丝点击