- 5
- 0
- 约2.49千字
- 约 3页
- 2018-05-23 发布于河南
- 举报
后缀树组da
// 已经验证其正确性
//该部分代码可以算出后缀树组中常用的sa 【】数组和height 【】数组
//sa 存放排名第i 的suffix 的起始位置
//height 【i 】存放sa 【i 】与sa 【i-1】的最大公共前缀
#includecstdio
#includecstring
const int MAXN=1000;
int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN];
int cmp(int *r,int a,int b,int l)
{
return r[a]==r[b]r[a+l]==r[b+l];
}
void da(int *r,int *sa,int n,int m)
{
int *x=wa,*y=wb,*t;
memset(ws,0,sizeof(ws));
for(int i=0; in; i++)
ws[x[i]=r[i]]++;
for(int i=1; im; i++)
ws[i]+=ws[i-1];
for(int i=n-1; i=0; i--)
sa[--ws[x[i]]]=i;
for(int j=1,p=
原创力文档

文档评论(0)