poj 字串乘方

2022-06-23 14:15:09 字數 995 閱讀 2626

kmp演算法的解釋:字串匹配的kmp演算法-簡單易懂

點選開啟鏈結

總時間限制:

3000ms 記憶體限制: 65536kb

描述給定兩個字串a和b,我們定義a*b為他們的連線。例如,如果a=」abc」 而b=」def」, 則a*b=」abcdef」。 如果我們將連線考慮成乘法,乙個非負整數的乘方將用一種通常的方式定義:a^0=」」(空字串),a^(n+1)=a*(a^n)。

輸入每乙個測試樣例是一行可列印的字元作為輸入,用s表示。s的長度至少為1,且不會超過一百萬。最後的測試樣例後面將是乙個點號作為一行。

輸出對於每乙個s,你應該列印最大的n,使得存在乙個a,讓s=a^n

樣例輸入

abcd

aaaa

ababab

.

樣例輸出

1

43

提示

本問題輸入量很大,請用scanf代替cin,從而避免超時。

解題思路:

kmp。直接用stl的模板會超時。

以ababab為例,kmp演算法對應的next陣列為-1,0,0,1,2,3,4(next陣列第len個值),則含有的公共子串最長為len-next[len]=6-4=2,含有的公共子串個數為len/(len-next[len])=6/(6-4)=3;

同理對於ababa,對應的next陣列為-1,0,0,1,2,3,所以含有的公共子串長度為5-3=2,公共子串個數為5/2=2.5,顯然此時不能整除,即這種情況含有的公共子串個數直接記為1。

常用的kmp演算法部分:

void getnext(char s)

else

j=next[j]; }}

int main()

else

} return 0;

}

poj 2406 字串乘方

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

字串處理 poj1035

本身是個一眼能看出演算法的水題,但是實現還是出了很多問題。一開始列舉的太奔放。直接t掉 然後腦抽在了乙個地方 其實只要在第乙個不同的位置新增或者刪除就可以 最近的狀態也是非常差,水題都做的艱辛,insert和delete借鑑了小優前輩的寫法。include include include inclu...

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...