新年前的最后一贴,待编辑 /*前几天我不是发了一个KMP算法吗,在结尾我说,有比KMP更好的算法,BM和Sunday算法 BM算法究竟是个什么东西呢?其实BM算法的资料在网上是不算多的*/
分类:
编程语言 时间:
2016-02-07 21:21:26
阅读次数:
384
奶牛矩阵 题目大意:给定一个矩阵,要你找到一个最小的矩阵,这个矩阵的无限扩充的矩阵包含着原来的矩阵 思路:乍一看这一题确实很那做,因为我们不知道最小矩阵的位置,但是仔细一想,如果我们能把矩阵都放在左上角该多好,这样一来这一题好像又是循环数组那个样子了(二维的)。 而事实上我们确实可以把所有情况都放在
分类:
编程语言 时间:
2016-02-05 19:12:32
阅读次数:
215
[2016-02-03][KMP算法]123456789101112131415161718192021222324252627282930313233const int maxn = 1E5 + 10;const int maxm = 1E4 + 10;int next[maxm];int kkk...
分类:
编程语言 时间:
2016-02-04 01:07:08
阅读次数:
282
怎么求串的模式值next[n] (1)next[0]= -1 意义:不论什么串的第一个字符的模式值规定为-1。 (2)next[j]= -1 意义:模式串T中下标为j的字符,假设与首字符 同样,且j的前面的1—k个字符与开头的1—k 个字符不等(或者相等但T[k]==T[j])(1≤k<j)。 如:
分类:
编程语言 时间:
2016-02-03 14:23:32
阅读次数:
191
KMP 算法公式: ///推导公式 /// f(j)=pattern[1...(k-1)]=pattern[j-(k-1)...(j-1)];j表示pattern中的字符数,K表示前缀字符串中K的最大值,K /// 建立Next表 /// /// ...
分类:
编程语言 时间:
2016-01-21 01:44:09
阅读次数:
246
这里放一个模板,话说c++抽掉后我调了好久 1 #include 2 #include 3 #include 4 using namespace std; 5 int p[101]; 6 int main(){ 7 string a,b; 8 cin>>a>>b; 9 int...
分类:
编程语言 时间:
2016-01-20 22:23:56
阅读次数:
147
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?这完全可以是一道程序员的笔试题。 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著.....
分类:
编程语言 时间:
2016-01-19 12:01:24
阅读次数:
161
1.简介 字符串匹配就是看看那字符串b是不是字符串a的子串.常用的Knuth-Morris-Pratt 算法,又称KMP算法.2.主要思想 当patter在某一位置与string匹配失败时,我们除了知道从string的这个位置进行匹配失败这个结果外,是否可以从前面的匹配中获得更多的信息呢。即当...
分类:
编程语言 时间:
2016-01-11 00:17:38
阅读次数:
234
题目连接:Codeforces 432D Prefixes and Suffixes题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次。解题思路:依据性质能够依据KMP算法求出全部的前后缀串,然后利用dp求解,dp[i]表示从1到i这个子串出现过的次数。转移方程dp[jump[i...
分类:
其他好文 时间:
2015-12-28 22:06:12
阅读次数:
188
KMP算法:指一种字符串匹配的算法。引子:其实就是根据字符串本身的性质判断若当前位置不匹配,则最少右移几位可以开始匹配。
比如字符串为babba,若最后一位不匹配则显然右移一位,两位均不可,但右移三位可以。因为前两个字符,和后两个字符相等。这样就大大减少了移动速度,匹配次数。算法具体实现过程:实现其实是一种图论的方法实现。之前的例子最后一位不成功,就要再从第三位开始比较,我们将这样的一种关系,叫做...
分类:
编程语言 时间:
2015-12-26 15:11:23
阅读次数:
231