hdu2027 trie树 字典树模板

Posted tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu2027 trie树 字典树模板相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
using namespace std;

#define Max 26

const int maxn=100000;

typedef struct TrieNode{
    int nCount;//根据需要改变
    struct TrieNode *next[Max];
}TrieNode;

TrieNode *root=NULL;

int allcop=0,ans,flag;

TrieNode memory[maxn];

TrieNode *CreatTrieNode(){
     TrieNode *temp=&memory[allcop++];
     temp->nCount=0;
     for(int i=0;i<Max;i++) temp->next[i]=NULL;
     return temp;
}

void InsertTrie(TrieNode **pRoot,char *str){
      TrieNode *temp=*pRoot;
      int i=0,k;
      while(str[i]){
        k=str[i]-a;
        if(temp->next[k]){
                //temp->next[k]->nCount++;
        } else temp->next[k]=CreatTrieNode();
        temp=temp->next[k];
        i++;
      }
      temp->nCount++;
}

int SearchTrie(TrieNode *root,char *str){
    if(root==NULL) return 0;
    TrieNode *temp=root;
      int i=0,k;
      while(str[i]){
        k=str[i]-a;
        if(temp->next[k]){
                temp=temp->next[k];
        } else return 0;
        i++;
      }
      return temp->nCount;
}

void Traverse(TrieNode *root){
     for(int i=0;i<Max;i++){
        if(root->next[i]){
                if(root->next[i]->nCount>0) ans++;
                Traverse(root->next[i]);
        }
     }
}

char str[1010];

void init(){
  ans=0;
  flag=0;
  allcop=0;
  memset(memory,0,sizeof(memory));
  root=CreatTrieNode();
}

int main()
{
    while(1){
        init();
        string line;
        getline(cin,line);
        stringstream ss(line);
        while(ss>>str) {
        if(str[0]==#) {
                flag=1;
                break;
        }
        InsertTrie(&root,str);
        }
        if(flag) break;
        Traverse(root);
        printf("%d\n",ans);
    }
    return 0;
}

输入方式值得学习

以上是关于hdu2027 trie树 字典树模板的主要内容,如果未能解决你的问题,请参考以下文章

字典树模板+HDU 1671 ( Phone List )(字典树)

Trie树+HDU1251

8.10 trie树模板

hdu 1251 统计难题(字典树)

字典树(trie树)学习总结(例题讲解:POJ2001,HDU1251,HDU4825)

Trie树(字典树)模板