字尾陣列( 學習ing

2021-09-18 09:08:00 字數 798 閱讀 8978

就 基於大老們的部落格 研究了好久 才大概看明白 ( 然而並不明白能幹嘛-----------------

最開始看懂的

加了一分個人理解 /**/的是自己寫的 //是大老原來的

#include#include#include#define rint register int

#define inv inline void

#define ini inline int

#define maxn 1000050

using namespace std;

char s[maxn];

int y[maxn],x[maxn],c[maxn],sa[maxn],rk[maxn],height[maxn],wt[30];

int n,m;

inv get_sa()

//for (rint i=1; i<=n; ++i) putout(sa[i]),putchar(' ');

}inv get_height()

putchar(10);

}int main()

另乙個大佬的

這個就看了看高度陣列那一塊 反正是那一塊看懂了 這個就沒加注釋

inline void suffixarray()

if (unique) break;

}for (int i = 1, k = 0; i <= n; i++)

ht[rk[i]] = k;

}}

感覺還是不太理解 爭取以後自己寫乙個模板和部落格出來吧…

字尾陣列學習

字尾陣列sa是乙個一維陣列,它是將 s 的 n 個字尾從小到大進行排序之後把排好序的字尾的開頭位置順次放入 sa 中。比如 banana的所有字尾是banana,anana,nana,ana,na,a,按照字典序排列就是a,ana,anana,banana,na,nana,那麼字尾陣列就是。首先將單...

字尾陣列學習

參考 演算法入門經典 和rank 名次陣列 字尾i在所有字尾中從小到大排列的名次 以第k個字元開始的字尾稱為字尾k rank 0 n 1 有效 height height i suffix sa i 1 和suffix sa i 的最長公共字首,也就是排名相鄰的兩個字尾的最長公共字首。height ...

字尾陣列學習小結

這兩天學習了字尾陣列,感想是,果然字尾陣列比網路流可愛的多,就像字串比圖論可愛的多。有模板真好qvq。總結了一下字尾陣列的幾個要點 一.理解rank sa height三個陣列。分別代表所構成的字尾陣列str i 在程式裡並不表現出來 排名後的名次 排名後第i位是str中的哪乙個 str sa i ...