假設字串長度為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...