
kmp算法
Start_to_crazy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KMP算法中的next数组学习
这两天再次看了KMP算法,上次看这个算法好像是3,4个月前的事情吧,那时候看了一篇比较详细的博客之后就感觉自己弄懂了,去过了两个模板题之后就飘了,事实证明这是错觉..ORZ。现在再看发现好像找不到了之前那篇比较详细的博客了。现在去找那些博客发现讲的看起来很详细,但是我看着好蛋疼啊,可能是我不习惯于模拟吧,所以我决定把这两天自己弄懂的KMP中的next数组(自己认为弄懂了)来给大家讲解一下,我们可能原创 2018-01-21 15:39:56 · 466 阅读 · 0 评论 -
kuangbin专题十六 HDU3374 最大最小表示法+KMP循环节
题意: 有一个字符串,它可以通过左移一位变成另外一个同构字符串,每产生一个新的同构字符串,就编号加一,现在要你输出四个值: 最小字典序的编号,最小字典序个数,最大字典序编号,最大字典序个数。 题解: 一开始我的想法就是暴力求出最小字典序和最大字典序,结果估算了一下喜闻乐见的超时了,然后我去看了一下,原来还有最小最大表示法这种黑科技的ORZ,突然感觉自己菜的不单单是这些常用的算原创 2018-01-22 19:10:02 · 402 阅读 · 0 评论 -
kuangbin专题十六 HDU2594 KMP
题意: 给两个字符串,求第一串的前缀与第二串的后缀匹配的最长序列以及长度。 题解: 让两个字符串合并在一起,算出next数组然后取两者中最小的子串就可以了。但是这里我有一个疑问,为什么我用for接上去的字符串会WA,用strcat反倒出现错误了呢?百思不得其解。#include<stdio.h> #include<string.h> #include<algorithm> us原创 2018-01-22 10:01:01 · 289 阅读 · 0 评论 -
kuangbin专题十六 POJ2752(好题) KMP的next数组性质的考察
题意: 给定一个字符串S,从小到大输出S中既是前缀又是后缀的子串的长度。 题解: 一看到这道题就想到肯定是考察next数组的,但是本人笨拙硬是想不出个所以然,后来别人提醒了一下才转醒过来,next数组的作用就是找到最大前缀后缀长度(保存某段子串的相同前后缀的最大长度,不包括自身),而要成为前缀后缀的最大一个特性就是next的前缀字串一定是包括最前面的字符的,而后缀却不一定,但是原创 2018-01-21 22:34:21 · 321 阅读 · 0 评论 -
kuangbin专题十六 POJ2406 KMP循环节次数
题意: 给你一个字符串 问你最多由多少相同的子串组成这个字符串。 题解: 这道题是求KMP循环节次数的,我一看不就是个模板题吗,直接上去打了模板然后WA了,百思不得其解,后来想了一下,len%(len-next[len])==0才能输出len/(len-next[len]),否则只能为1。因为题目要求必须由相同的字符串组成完整的S,所以不能整除的话说明没有循环节了。#inclu原创 2018-01-21 19:52:48 · 263 阅读 · 0 评论 -
kuangbin专题十六 HDU1358 求KMP循环次数
题意: 给你一串字符串,问你是否存在循环节,如果存在输出循环节的次数。 还是说一下样例吧: 第一组: 2 2 表示的是第一个字母到第二字母,a出现了两次。 3 3 表示的是第一个字母到第三个字母,a出现了3次。 第二组: 2 2表示的是第一个字母到第二个字母,a出现了两次。 6 2表示的是第一个字母到第六个字母,aab出现了两次。 9 3表示的是第一个字母到第九个字母,原创 2018-01-21 19:28:23 · 281 阅读 · 0 评论 -
kuangbin专题十六 HDU3746 判断KMP循环节和补齐循环节
题意: 给你一个字符串,求添加多少个字符才能将字符串的全部字符最少循环2次。 题解: 这道题是理解一下KMP的循环节的概念,求循环节的公式和求补齐循环节所需的个数的公式。下面我会发我所看的资料给你们看: http://blog.csdn.net/hao_zong_yin/article/details/77455285#include<stdio.h> #include<st原创 2018-01-21 19:03:06 · 339 阅读 · 0 评论 -
kuangbin专题十六 HDU1686 KMP理解
题意: 给出两个串,分别为A,B,问A串在B串中出现了几次?(位置不同,也算不同的串) 题解: 解释一下第二个样例为什么是3吧: AZA AZAZAZA B串中对应A串的位置为123,345,567。理解了吧? 很好接下来才是重要的,这道题考察的其实是你对KMP的理解程度,我看到这道题一开始的想法就是当匹配完之后j-k+1再进行匹配,然后原创 2018-01-21 16:04:45 · 346 阅读 · 0 评论 -
kuangbin专题十六 HDU1711 KMP模板题
题意: 给出两个序列的数字,要你找到第一个序列中找到第二个序列并输出位置。 题解: KMP模板题。#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int MAXN=1000000+7; int s[MAXN]; int p[MAXN]; int Next[MA原创 2018-01-21 15:48:08 · 364 阅读 · 0 评论 -
kuangbin专题十六 HUD2087 KMP模板题
题意: 中文题。 题解: KMP模板题,有点坑爹的就是HDU中的编译中next好像是个函数吧?不能编译,要将next数组变成Next数组。#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int MAXN=1000+7; char s[MAXN]; char原创 2018-01-21 15:44:47 · 293 阅读 · 0 评论 -
kuangbin专题十六 FZU1901 考察next数组的理解
题意: 读题读了半天,还是没弄懂题意,终于在看到多个博客之后终于明白了这破题意。。ORZ,它的意思就是字面意思,但是我不理解啊卧槽!! 应该是出输出满足S[i]==S[i+p](i+p不能超过len,i可以取不使(i+p)超过len的值)的p。 题解: 看了三位dalao的博客做出来的,实际上相当于没做….. http://blog.csdn.net/che原创 2018-01-31 16:40:37 · 356 阅读 · 0 评论