KMP與迴圈節相關題目

2022-07-21 06:27:09 字數 1308 閱讀 4951

hdu 3746 cyclic nacklace ( kmp求最小迴圈節 )

len - nextval[len]即為最小迴圈節長度。

#include #include 

#include

#include

using

namespace

std;

const

int maxn = 100100

;const

int inf = 1

<< 20

;char

str[maxn];

intnextval[maxn];

intlen;

void getnext( char s, int

next )

else

j=next[j];

}}int

main()

return0;

}

hdu 1358 period

題意:若某串的前i個字元是迴圈串,輸出i以及迴圈節出現的次數。

做法跟上一題差不多

#include #include 

#include

#include

using

namespace

std;

const

int maxn = 1000010

;char

str[maxn];

intnextval[maxn];

intlen;

void getnext( char s, int

next )

else

j=next[j];

}}int

main()

}puts(

"");

}return0;

}

poj 2406 power strings(求迴圈串的最大迴圈週期)

注意這組資料:aabaabaa

顯然答案是:1

#include #include 

#include

const

int maxn = 1000100

;char

str[maxn];

intnextval[maxn];

intlen;

void getnext(char s,int

next)

else

j=next[j];

}}int

main()

return0;

}

KMP 迴圈節問題

現在給你乙個字串,請問在該字串末尾最少新增多少個字元,可以讓這個字串獲得重複迴圈序列。輸入 第一行是乙個整數 t 0 t 100 t 0t 0 t 1 00 代表測試資料的組數。之後t tt行每行乙個字串,由小寫字母組成,字串的長度 3 l 100000 3 l 100000 3 l 1 0000 ...

最短迴圈節 KMP 實現

假設字串str的長度為len,則str存在最小迴圈節,迴圈節的長度cyclelen為len next len 迴圈子串為str 0 len next len 1 如果len可以被len next len 整除,則表明字串str可以完全由迴圈節迴圈組成 如果不能,說明還需要再新增幾個字母才能補全,需要...

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