KMP next陣列求最小迴圈節

2021-07-11 12:05:37 字數 518 閱讀 9059

假設字串長度為len,那麼最小的迴圈節cir = len-next[len];

如果有len%cir == 0並且cir!=len,那麼這個字串就是已經是完美的字串,不用新增任何字元; 

如果cir==len,那麼說明最小的迴圈節長度為m,那麼至少還需m個

如果不是完美的那麼需要新增的字元數就是cir - (len-(len/cir)*cir)),相當與需要在最後乙個迴圈節上面新增幾個。 

附杭電3746**:

題意:給定乙個字串,問我們還需要新增幾個字元可以構成乙個由n個迴圈節組成的字串。

#include#include#define maxx 1000005

char a[maxx],b[maxx];//a是主串

int next[maxx];

void snext(char p,int next)

}int main()

return 0;

}

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 如果不能,說明還需要...

最小迴圈節

分類 資料結構 2013 04 05 20 01 157人閱讀收藏 舉報 acm演算法 資料結構 kmp最小迴圈節 通過kmp中的 next 陣列求最小迴圈節 題目要求 給出乙個字串,求出將字串的全部字元最少迴圈2次需要新增的字元數。cpp view plain copy print?include...