hdoj 难题统计--tire

来源:互联网 发布:北大在职研究生 知乎 编辑:程序博客网 时间:2024/05/16 10:10

题目出处:http://acm.hdu.edu.cn/showproblem.php?pid=1251

典型的tire树也是最简单的,直接套模板水过~~~~~~

不知道为什么用scanf老是出错,gets就可以。。。

PS:AC代码:

#include<iostream>using namespace std;#define MAX 26typedef struct TrieNode{            int nCount;           struct TrieNode *next[MAX];}TrieNode;//定义结点结构 TrieNode Memory[1000000];int allocp = 0;void InitTrieRoot(TrieNode **pRoot)//初始化tire树 {         *pRoot = NULL;}TrieNode *CreateTrieNode()//创建新结点 {        int i;        TrieNode *p;       p = &Memory[allocp++];       p->nCount = 1;       for(i = 0 ; i < MAX ; i++)           {                        p->next[i] = NULL;       }           return p;}void InsertTrie(TrieNode **pRoot , char *s)//插入一个字符串 {        int i , k;       TrieNode *p;         if(!(p = *pRoot))         {                      p = *pRoot = CreateTrieNode();                  }    i = 0;                  while(s[i])                  {                               k = s[i++] - 'a'; //确定branch                               if(p->next[k])                                       p->next[k]->nCount++;                               else                                      p->next[k] = CreateTrieNode();                               p = p->next[k];                  }}int SearchTrie(TrieNode **pRoot , char *s)//查找一个字符串 {         TrieNode *p;         int i , k;         if(!(p = *pRoot))         {                      return 0;         }         i = 0;         while(s[i])         {                      k = s[i++] - 'a';                       if(p->next[k] == NULL)                      return 0;                      p = p->next[k];         }                  return p->nCount;}    int main(){         char s[15];               TrieNode *Root = NULL;            InitTrieRoot(&Root);            while(gets(s)&&s[0])           {                         InsertTrie(&Root , s);          }            while(gets(s))            {                          printf("%d\n", SearchTrie(&Root , s));           }             return    0;}


 

 

原创粉丝点击