查看原题 题意大致是:给你一个字符串算这里面全部前缀出现的次数和。比方字符串abab,a出现2次。ab出现2次,aba出现1次。abab出现1次。总计6次。 而且结果太大。要求对1007进行模运算。 AC代码 #include <iostream> using namespace std; #inc ...
分类:
编程语言 时间:
2017-05-03 14:34:22
阅读次数:
243
KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表n ...
分类:
编程语言 时间:
2017-05-02 18:16:20
阅读次数:
315
题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。 为了减少骗分的情况,接下来还要输出子串的前缀数组next。如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了。 输入输出格式 输入格式: 第一行为一个字符串,即为s1(仅包含大写字 ...
分类:
其他好文 时间:
2017-05-02 13:59:15
阅读次数:
179
一、概要: KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的(先了解BF算法)。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。 二、怎么求模式串next[n]的值: 定义: (1)next[0]= -1 意 ...
分类:
编程语言 时间:
2017-05-01 12:57:58
阅读次数:
287
前面说完KMP算法的特征向量,现在开始谈一下KMP算法了。 kmp算法的思想是这样的: 子串和长串比较,,当遇到相同的时候,继续比较,当不匹配时,子串右移,使得子串的不匹配位置的最长前缀串移动到长串的不匹配位置左边,与之相邻。 之后继续,如若一直不匹配,直到最长前缀串为0,则从子串第一位继续与不匹配 ...
分类:
编程语言 时间:
2017-04-30 15:13:07
阅读次数:
214
1 #include//***28&&16行相当于递归算法****** 2 #include 3 #include 4 using namespace std; 5 const int MAXN=1000001; 6 char a[MAXN],b[MAXN]; 7 int la,lb; 8 int ... ...
分类:
编程语言 时间:
2017-04-30 11:00:00
阅读次数:
163
题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。 为了减少骗分的情况,接下来还要输出子串的前缀数组next。如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了。 输入输出格式 输入格式: 第一行为一个字符串,即为s1(仅包含大写字 ...
分类:
其他好文 时间:
2017-04-29 22:10:54
阅读次数:
143
Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6549 Accepted Submission(s): 2626 Problem ...
分类:
其他好文 时间:
2017-04-29 20:03:41
阅读次数:
98
引言 字符串的模式匹配是一种经常使用的操作。模式匹配(pattern matching),简单讲就是在文本(text,或者说母串str)中寻找一给定的模式(pattern)。通常文本都非常大。而模式则比較短小。典型的样例如文本编辑和DNA分析。在进行文本编辑时,文本一般是一段话或一篇文章,而模式则经 ...
分类:
编程语言 时间:
2017-04-28 20:21:30
阅读次数:
325
假设子串P有m个字符,子串P的特征向量N有m个非负整数,与每个字符一一对应。 也就是说每个字符都有属于自己,用来描述所在位置特征的专属数字。 那么,问题来了,这个数字的意义是什么?换句话说这个数字的作用是什么?用来描述什么? 嗯哼!敲黑板,注意听哦。 假设位置是i,N[i]是5,则5代表,从p的前五 ...
分类:
编程语言 时间:
2017-04-25 22:21:49
阅读次数:
242