串珠子 题目大意:给定一个字串,要你找到如果要使之成为循环串,在末尾需要的最小的字数(只能添加字符,不能删减字符) 首先联动一下之前做过的动态规划问题POJ 3280,当然了3280这一题是用的LD,因为他可以添加或者删除(加上修改也行,但是要改状态方程了) 而我们现在要讨论的这一题(HDU 374
分类:
编程语言 时间:
2016-02-05 19:18:40
阅读次数:
182
c./*kmp模板*/#include#include#includeusing namespace std;#define MAXN 1024//字符串长度int _next[MAXN];void GetNext(char t[]){//求next数组 int j,k,len; j=0...
分类:
其他好文 时间:
2016-01-23 21:37:44
阅读次数:
127
题意:有一个键盘坏了 会在你不知道的情况下按下home或者end 给你这个键盘的实际输入 要求输出显示器上的实际显示解析:输入最大5MB 直接数组检索肯定会超时,用数组模拟链表 next数组表示显示屏中s[i]右边的字符编号,变量cur模拟光标,即当前光标位于s[cur]的右边。 变量l...
分类:
其他好文 时间:
2016-01-03 20:50:38
阅读次数:
218
下面将介绍三种有关字符串匹配的算法,一种是朴素的匹配算法,时间复杂度为O(mn),也就是暴力求解。这种方法比较简单,容易实现。一种是KMP算法,时间复杂度为O(m+n),该算法的主要任务是求模式串的next数组。另外还有一种对KMP算法的改进,主要是求nextval数组。第一种朴素的匹配算法:int...
分类:
编程语言 时间:
2015-11-26 12:34:29
阅读次数:
170
next数组的历史 有关字符串的模式匹配算法中,比较容易写出的是朴素的匹配算法也就是一种暴力求解方式,但是由于其时间复杂度为子串长度和主串长度的乘积,例如strlen(subStr) = n,strlen(mainStr) = m,则其时间复杂度为O(mn)。 为了能够得到更有效的匹配算法,D......
分类:
编程语言 时间:
2015-11-26 12:26:35
阅读次数:
140
最小循环节(长度)=len-next[len];证明:----------------------------------------------k m x j i由上,next【i】=j,两段红色的字符串相等(两个字符串完全相等),s[k....j]==s[m....i]设s[x....
分类:
编程语言 时间:
2015-11-05 13:36:27
阅读次数:
198
前些日子写了一篇KMP算法的博文,浅谈数据结构之KMP(串中的模式匹配算法),在这片文章中,谈到了一个模式串K值的记录数组next[],详细可看那篇文章,其实,前面定义的next[]数组是有一定缺陷的,下面我面我将针对一种情况进行举例: 如上图,如果按照之前的方法所获取的next[]数组的话,当两....
分类:
编程语言 时间:
2015-10-25 20:48:22
阅读次数:
240
感觉这里讲的挺好的。http://cavenkaka.iteye.com/blog/1569062就是不断递归next数组。长度不断减小。题意:给你一个串,如果这个串存在一个长度为n的前缀串,和长度为n的后缀串,并且这两个串相等,则输出他们的长度n。求出所有的长度n。思路:KMP中的get_next...
分类:
编程语言 时间:
2015-10-06 15:25:13
阅读次数:
224
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763题意就是求s串中满足EAEBE格式的E的最大长度;我们可以枚举前缀和后缀的所有匹配(k)看是否在s[k,len-k]中;如果不在它中间那么就让k=Next[k],刚开始想的是k--;但是这样循环次数...
分类:
编程语言 时间:
2015-10-03 20:43:12
阅读次数:
156
前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明不大好理解,没有与程序...
分类:
编程语言 时间:
2015-10-01 10:20:47
阅读次数:
187