摘要: 题意:给出一个字符串,在所有长度大于1的前缀中,求所有的周期至少为2的周期串,并输出一个周期的长度以及周期的次数。分析:有了上一题 HDU 3746 的铺垫,这道题就很容易解决了把next求出来,然后逐个判断即可。 1 #include 2 #include 3 4 const int max... 阅读全文
posted @ 2014-11-20 20:21 AOQNRMGYXLMV 阅读(716) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个字符串,要求在后面添加最少的字符是的新串是循环的,且至少有两个循环节。输出最少需要添加字符的个数。分析:假设所给字符串为p[0...l-1],其长度为l有这样一个结论:这个串的最小循环节为 l - next[l]感觉自己想得不是特别透彻,所以把别人的博客贴上来吧。里面有个小错误就是:n... 阅读全文
posted @ 2014-11-20 19:23 AOQNRMGYXLMV 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 题意:用两个字符串分别表示布条和图案,问能从该布条上剪出多少这样的图案。分析:毫无疑问这也是用KMP匹配,关键是一次匹配完成后,模式串应该向后滑动多少。和上一题 HDU 1686 不同,两个图案肯定不能在母串中有交叉的部分,所以当匹配成功一次后,应当滑动整个模式串的长度。和上一题比,代码几乎不变,只... 阅读全文
posted @ 2014-11-20 03:41 AOQNRMGYXLMV 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 题意:求模式串W在母串T中出现的次数,各个匹配串中允许有重叠的部分。分析:一开始想不清楚当一次匹配完成时该怎么办,我还SB地让i回溯到某个位置上去。后来仔细想想,完全不用,直接让模式串向前滑动,即 j = next[j] 1 #include 2 #include 3 #include 4 ... 阅读全文
posted @ 2014-11-20 03:19 AOQNRMGYXLMV 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 题意:用第二个数列去匹配第一个数列,输出第一次匹配到的位置,如果没有则输出-1.分析:这明显是一道裸的KMP。我是在这篇博客上学的KMP算法的,讲得比较透彻。http://blog.csdn.net/v_july_v/article/details/7041827 1 #include 2 #in... 阅读全文
posted @ 2014-11-20 02:20 AOQNRMGYXLMV 阅读(156) 评论(0) 推荐(0) 编辑