poj1961 KMP求迴圈節

2021-06-22 21:14:39 字數 457 閱讀 2846

又是乙個kmp求迴圈節,只要i%(i-next[i])==0&&i!=(i-next[i])就說明長度為i時,有i/(i-next[i])個迴圈節。

為什麼會得到這個?這是由next函式的特性得到的,認真想一下,很容易想明白。

**如下:

#include#include#include#includeusing namespace std;

//各個字串的下標從0開始,並且next[i]表示的意義不包含第i個字元。

#define max 1000010

int next[max];

char t[max];//t是待判斷的串

int n;

void calcnext(int length) //t串的長度

{ int i,j;

i=0;

next[0]=-1;

j=-1;

while(i

POJ 1961 KMP(當前重複次數)

題意 字首重複次數,舉個例子,aaa 2的位置2個a,3的位置3個a abcabcabc 6的位置兩個abcabc,9的位置三個abcabc.思路 kmp基礎題目之一,直接利用的是next陣列的特點,對於當前點i,i next i 表示的是最小重複子串長度,如果 i next i 不等於0,同時i ...

kmp求最小迴圈節

kmp最小迴圈節 迴圈週期 定理 假設s的長度為len,則s存在最小迴圈節,迴圈節的長度l為len next len 子串為s 0 len next len 1 1 如果len可以被len next len 整除,則表明字串s可以完全由迴圈節迴圈組成,迴圈週期t len l。2 如果不能,說明還需要...

kmp求最小迴圈節

kmp最小迴圈節 迴圈週期 定理 假設s的長度為len,則s存在最小迴圈節,迴圈節的長度l為len next len 子串為s 0 len next len 1 1 如果len可以被len next len 整除,則表明字串s可以完全由迴圈節迴圈組成。迴圈週期t len l。2 如果不能,說明還需要...