博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字典树从第i个构造HDU2846
阅读量:4649 次
发布时间:2019-06-09

本文共 1129 字,大约阅读时间需要 3 分钟。

http://www.cnblogs.com/ziyi--caolu/archive/2012/12/13/2816279.html  (参考)

 

附我的代码:

/****HDU2846    *构造 字典树 的方法    *字符串匹配    *STRING S=X1X2X3X4...    *X1...  +X2...+X3...+ + +...    **ABABBBB  ABABBB AND ABBBB  IS  REPEATED !    * CREATE A TAG*/#include 
using namespace std;const int maxn=500050;//600050 Memory Limit Exceeded //400050 Runtime Error (ACCESS_VIOLATION) array outstruct node{ int nxt[26]; int num; int tag;}tre[maxn];int p,q,cnt,len;char s[50];void add(int now,int x){ if(len==x) return; int v=s[x]-'a'; if(!tre[now].nxt[v]) tre[now].nxt[v]=++cnt; if(tre[tre[now].nxt[v]].tag!=p+1) { tre[tre[now].nxt[v]].num++; tre[tre[now].nxt[v]].tag=p+1; } add(tre[now].nxt[v],x+1);}int fin(int now,int x){ if(len==x) return tre[now].num; int v=s[x]-'a'; if(!tre[now].nxt[v])return 0; fin(tre[now].nxt[v],x+1);}int main(){ scanf("%d",&p); memset(tre,0,sizeof(tre)); cnt=0; while(p--) { scanf("%s",s); len=strlen(s); for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/star-and-me/p/6776474.html

你可能感兴趣的文章