您的位置:首页 > 其它

HUST 1010 KMP最短循环节

2016-08-20 12:54 281 查看
题目大意:

给一个串A 比如abc,重复无限次,得到 abcabcabcabc………………abcabc…………

选择中间一段 abcabcabcabc………………abcabc…………

对于可以截获中间的abca而言,原来的串最短是多长……

仔细思考不会,然后队友告诉我并不在意原来的串长……所以直接转化为求串的最短循环节。

就和之前的题目一样了

代码挺短的  答案为len - next[len]。结束

while (1)
{
int lenP = 0;
if (!get_s(pattern)) break;
lenP = strlen(pattern);
pattern[lenP] = 0;
kmp_pre(pattern, lenP, nxt);
int cir = lenP - nxt[lenP];
print_int(cir);
wirte_s("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: