后缀数组吧 关注:0贴子:4
  • 0回复贴,共1

后缀数组吧里面怎能没有后缀数组呢?

取消只看楼主收藏回复

void da(char* r,int n,int m){ int i,j,p,*x=wa,*y=wb,*t; for(i=0;i<m;i++)ws[i]=0; for(i=0;i<n;i++)ws[x[i]=r[i]]++; for(i=1;i<m;i++)ws[i]+=ws[i-1]; for(i=n-1;i>=0;i--)sa[--ws[x[i]]]=i; for(j=1,p=1;p<n;j<<=1,m=p){ for(i=n-j,p=0;i<n;i++)y[p++]=i; for(i=0;i<n;i++)if(sa[i]>=j)y[p++]=sa[i]-j; for(i=0;i<n;i++)wv[i]=x[y[i]]; for(i=0;i<m;i++)ws[i]=0; for(i=0;i<n;i++)ws[wv[i]]++; for(i=1;i<m;i++)ws[i]+=ws[i-1]; for(i=n-1;i>=0;i--)sa[--ws[wv[i]]]=y[i]; for(t=x,x=y,y=t,p=1,x[sa[0]]=0,i=1;i<n;i++){ x[sa[i]]=cmp(y,sa[i-1],sa[i],j)?p-1:p++; } } return;}


1楼2017-09-09 15:09回复