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