hdu 1251 (字典树 Trie 模板题)

来源:互联网 发布:Oracle 序列的值sql 编辑:程序博客网 时间:2024/05/16 18:43

模板题 :


/*   W          w           w        mm          mm             222222222       7777777777777    *//*    W        w w         w        m  m        m  m          222        22              7777    *//*    w        w w         w        m  m        m  m                     22              777     *//*     w      w   w       w        m    m      m    m                    22              77      *//*     w      w    w      w        m    m      m    m                 222                77      *//*      w    w      w    w        m      m    m      m              222                  77      *//*      w    w      w    w        m      m    m      m            222                    77      *//*       w  w        w  w        m        m  m        m         222                      77      *//*       w  w        w  w        m        m  m        m      222                         77      *//*        ww          ww        m          mm          m     222222222222222             77      *///#pragma comment(linker, "/STACK:102400000,102400000")#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cstdlib>using namespace std;char s[15];typedef struct trie{  int v;  struct trie *next[26];}Trie;Trie root;void insert(char *s){  int len=strlen(s);  Trie *p=&root,*q;  for(int i=0;i<len;i++)  {    int id=s[i]-'a';    if(p->next[id]==NULL)    {      q=(Trie*)malloc(sizeof(root));      q->v=1;      for(int j=0;j<26;j++)      {        q->next[j]=NULL;      }      p->next[id]=q;      p=q;    }    else    {      p->next[id]->v++;      p=p->next[id];    }  }}int search(char *s){  int len=strlen(s);  Trie *p=&root;  for(int i=0;i<len;i++)  {    int id=s[i]-'a';    p=p->next[id];    if(p==NULL)return 0;  }  return p->v;}int main(){  #ifdef ONLINE_JUDGE  #else    freopen("test.in","r",stdin);  #endif  for(int i=0;i<26;i++)  {    root.next[i]=NULL;  }  while(1)  {    gets(s);    if(s[0]==0)break;    insert(s);  }  while(~scanf("%s",s))  {    printf("%d\n",search(s));  }}


0 0
原创粉丝点击