倍增法求sa的时候,是已知上一次的sa,rk,然后先求本次sa,再求本次rk。那么求rk的时候,有一段代码
memcpy(rk2,rk,sizeof(rk)); V=0; for(int i=1;i<=n;i++){ if(rk2[sa[i]]!=rk2[sa[i-1]]||rk2[sa[i]+h]!=rk2[sa[i-1]+h])V++; rk[sa[i]]=V; }
这里rk2应是复制的前一轮rk,应该需要开2倍大小吧?