
kmp
无名蒟蒻
苟利国家生死以,岂因祸福避趋之
展开
-
HDU-3746 Cyclic Nacklace
题目大意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。例子:abcabc 已经循环2次,添加数为0abcac 没有循环2次,添加字符abcac。数目为5.abcabcab 已经循环过2次,但第三次不完整,需要添加数为1这题其实可以说是poj2185的子问题,其中求高度的部分跟本题同理,只是把每行看作了一个整体。本题可以非常巧妙的kmp解决。做一遍kmp之后我们可以得到原创 2016-08-13 10:17:17 · 433 阅读 · 0 评论 -
poj 2185 : Milking Grid (KMP)
题意:给你一个字符矩阵,求出它的最小覆盖子矩阵,即使得这个子矩阵的无限复制扩张之后的矩阵,能包含原来的矩阵。 即二维的最小覆盖子串。一看这题,容易想出一种很直观的做法:求出每一行的最小重复串长度,取所有行的最小重复串长度的lcm为宽;对列也同样操作求出高。这种想法虽然很直观,但是否正确呢?事实上,这种算法并不是正确的。如下面的这个反例: 2 8 ABCDEFAB AAAABAAA对原创 2016-08-13 08:25:00 · 1230 阅读 · 2 评论 -
kmp匹配算法
(本文整理自讲义及自己的笔记,如有错误之处请指出)注意:在本文中,我们将使用始于零的数组来表示我们的字符串。所以在下面例子中,我们用S[2]来表示字符串S中的第三个字符。这种表示遵从C++语言的语法。 KMP算法可在一个主“文本字符串”S内查找一个“词”W的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。 —原创 2016-08-07 08:24:51 · 750 阅读 · 0 评论