【Trie树篇】就是那个那个啥么---直接存儿子的写法

来源:互联网 发布:网络编程有什么用 编辑:程序博客网 时间:2024/05/17 17:59

网上不少AC自动机就是各种的Trie树,但是这种字符集大的话儿子你存的下么...

#include <iostream>using namespace std;const char BASE = 'A';struct node{char ch;int EndFalg;int child[26];void init(char c){ch = c; EndFalg=0;memset(child,0,sizeof(child));}};node Trie[100000];int top = 0;int root = 0;void Insert(char *str,int &index,int loc){if(str[loc] == '\0')Trie[index].EndFalg += 1;else if(Trie[index].child[str[loc]-BASE] == 0){Trie[index].child[str[loc]-BASE] = ++top;Trie[top].init(str[loc]);Insert(str,Trie[top].child[str[loc]-BASE],loc+1);}else Insert(str,Trie[index].child[str[loc]-BASE],loc+1);}int main(){char str[10000];while(cin >> str) Insert(str,root,0);cout << top << endl;return 0;}


原创粉丝点击