HUST 1010 KMP最短循环节

来源:互联网 发布:网络推广代理公司 编辑:程序博客网 时间:2024/05/01 03:55

题目大意:


给一个串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");}



0 0
原创粉丝点击