poj2406 求主串的週期子串

2021-09-02 03:38:53 字數 551 閱讀 8583

題目大意:給出乙個字串,將其分解為若干子串的和,求可分解的最多子串的個數。

做題之前就知道這是一道kmp的題目,但一直沒想到怎麼寫  後面看了下別人的思路(最近寫題總是會忍不住看別人的思路 慚愧。。)   得出結論: 乙個串的週期子串長度=主串長-next[主串長度].  然後再用主串長除以週期子串長度就得到了子串週期長度。

下面貼**

#include "iostream"

using namespace std;

#define len 1000020

char c[len];

int next[len];

int clen;

void getnext()

else

} }int main()

clen=strlen(c);

getnext();

int t=clen-next[clen];

if (c[clen-1]!=c[t-1])

else

}return 0;

}

POJ 2406 字尾陣列 求連續重複子串

解法一 dc3求字尾 因為我用的是紅書的字尾模板,所以是倍增求的,所以這個dc3是用這個部落格的模板 這個也是勉強過的,時間為 2829ms了,寫得不機智就會超了。include include define n 2000005 define f x x 3 x 3 1?0 tb define g ...

poj 2406 字串乘方

2406 字串乘方 總時間限制 3000ms 記憶體限制 65536kb 描述給定兩個字串a和b,我們定義a b為他們的連線。例如,如果a abc 而b def 則a b abcdef 如果我們將連線考慮成乘法,乙個非負整數的乘方將用一種通常的方式定義 a 0 空字串 a n 1 a a n 輸入每...

統計子串在主串中出現的次數

思路 定義兩個指標p,q p指向主串首位址,q指向子串首位址。如果對應的字元相等,那麼 p,q,即兩個指標都向後移乙個單位再繼續比較 p和 q,否則q回到子串的首位址,只把指標p向後移動乙個單位。依次類推,如果 q 0 說明子串已經終止,子串在主串中出現的次數加1,直到主串終止為止。includei...