HDOJ 1251 统计难题

来源:互联网 发布:前后端数据交互 编辑:程序博客网 时间:2024/05/22 14:21

         典型的trie树模版题,trie树在前面一篇文章已经讲过,这里不多赘述了。

代码:

#include<iostream>using namespace std;typedef struct node{       int cnt;       node* next[26];} Trie;Trie root;void Creat_Trie(char*str){     int len,i,j;     len=strlen(str);     Trie *p=&root,*q;     for( i=0; i<len; i++){          int id=str[i]-'a';          if( p->next[id]==NULL){              q=new Trie;              q->cnt=1;              for( j=0; j<26; j++)                   q->next[j]=NULL;              p->next[id]=q;              p=p->next[id];          }          else{               p->next[id]->cnt++;               p=p->next[id];          }     }}int Find_Trie(char*str){    int len,i,j,id;    len=strlen(str);    Trie*p=&root;    for( i=0; i<len; i++){         id=str[i]-'a';         p=p->next[id];         if( p==NULL)             return 0;    }    return p->cnt;}int main(){    char str[15];    int i,ans;    for( i=0; i<26; i++)         root.next[i]=NULL;    while( gets(str)&&str[0]!='\0')           Creat_Trie(str);    memset(str,0,sizeof(str));    while( scanf("%s",&str)!=EOF){           ans=Find_Trie(str);           printf("%d\n",ans);    }    return 0;}


原创粉丝点击