HDU 1251 字典树裸模板

原创 2012年03月23日 08:59:31

以前也写过字典树,觉得自己写得很不好,很水很弱,虽然也ac了。

网上看了下别人的模板,果断学习之.......

#include<iostream>
#include<string.h>
#include<cstdio>
#define MAX 26 
using namespace std;

struct TrieNode
{
       int nCount;
       TrieNode  *next[MAX];
};

TrieNode Memory[1111111];
int allocp=0;

void InitTrieRoot( TrieNode **pRoot )
{
     *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';
            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[11];
    TrieNode *Root=NULL;
    InitTrieRoot(&Root);
    while( gets(s)&&s[0] )
           InsertTrie(&Root,s);
    while( gets(s) )
           printf( "%d\n",SearchTrie(&Root,s) );
    return 0; 
}


版权声明:本文为博主原创文章,转载请写明出处。

相关文章推荐

hdu1251 统计难题 字典树插入,查询模板和空间释放

字典树插入,查询模板和空间释放 #include #include #include using namespace std; struct trienode { int ncount;//该...
  • winycg
  • winycg
  • 2016年03月08日 18:37
  • 216

HDU 1251 统计难题 (字典树基本模板,有详细注释)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251   题目的意思已经很明白了:统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). ...
  • L_oser
  • L_oser
  • 2012年08月20日 16:52
  • 522

字典树模板(HDU1251)

struct node{ int Count; node *next[26]; node(){ //初始化数据 memset(next,NULL,sizeof...

HDU 1251 (统计难题) 字典树模板&&map实现

【题目链接】:click here~~ 【题目大意】: Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单...

HDU1251 统计难题(字典树模板题--数组实现+指针实现)

统计难题 Time Limit: 2000MS   Memory Limit: 65535KB   64bit IO Format: %I64d & %I64u ...
  • lwgkzl
  • lwgkzl
  • 2016年11月18日 22:18
  • 108

HDU 1251 统计难题(字典树模板)

统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) Total Subm...

HDU1251 统计难题(字典树模板)

么么哒!!!今天总算独立把字典树做出来了,没用字典树模板做题,真开心,以后还要继续努力,向斌哥(新一代男神,拿到阿里的offer)看齐 题目链接:http://acm.hdu.edu.cn/show...

HDU - 1251 统计难题(字典树模板题)

C - 统计难题 Time Limit:2000MS     MemoryLimit:65535KB     64bit IO Format:%I64d& %I64u Submit Status Pr...

HDU 1251 统计难题 (字典树模板题)

题意:给你一堆单词,现在有多次询问,每次询问求以给定字符串作为前缀的单词有多少个。 Sample Input banana band bee absolute acm ba b band abc ...
  • CillyB
  • CillyB
  • 2017年07月05日 23:24
  • 107

hdu1251 统计难题 裸的字典树 前缀子串统计

Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). 就是把经过的路径上的v++...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1251 字典树裸模板
举报原因:
原因补充:

(最多只允许输入30个字)