KMP
Rancho__
这个作者很懒,什么都没留下…
展开
-
hihoCoder-1015-KMP
KMP算法就是我们人类的类似的那种匹配模式,我们既然知道之前的一部分无法匹配,那我们就不会每次都用模式串的第一个来匹配了。 我们每次就回到模式串下一个需要匹配的位置就好了,所以求next数组的值就显得尤其重要。 这个手算是很好算的,大家对这这个算法自己用手演一遍,其实就是最快的了解方式,网上和书上的其实求法都对,但是他们默认的都是让模式串的第一个,下标就是1,但是我们的next数组在计算机里面是要...原创 2019-02-09 11:58:30 · 129 阅读 · 0 评论 -
HDU-1686-oulipo
这题就是KMP的模板题,讲解: https://blog.csdn.net/qq_41090676/article/details/86801491 #include <cstdio> #include <cstring> char p[10005], s[1000005]; int next[10005], ans; void getnext() { next[...原创 2019-02-09 17:17:35 · 90 阅读 · 0 评论 -
HDU-3746-Cyclic Nacklace
这题让求的是最小循环节,对于next数组就是,如果我们到达某一个字符,发现失配,我们应该跳转到该模式串位置的值。 所以我们就可以得到一个信息,next[len]里面存的就是模式串中以len为下标的字符,包括它总共有几个字符和开头匹配。 这是从1开始数的,也就是说,我们用的next数组算法都是从0开始数的,但是书上比如严蔚敏讲的就是从1开始数的。 放张严老师的写法: ...原创 2019-02-18 15:30:34 · 215 阅读 · 0 评论 -
POJ-1961-Period(ZOJ-2177)
这题是最短循环节,然后我们尝试小于字符串长度的所有长度,如果符合,我们就输出。 如果它等于0,说明它不循环,因为之前并没有重复的,如果i%(i-next[i])==0说明它是循环的,然后除一下得到就可以了。 详解见:https://blog.csdn.net/qq_41090676/article/details/87623417 #include &lt;stdio.h&gt; char s[1...原创 2019-02-18 17:33:30 · 136 阅读 · 0 评论