数据结构与kmp算法next原理 KMP两道题

2954人阅读
关于kmp算法,大家都非常熟悉,其涵义非常难懂,以至于我学习kmp算法的时候一直怀疑自己的智商,其具体思想,这里就不多说了,网上也有很多资料,我用的是严蔚敏老师的书,实现也是按说上的方法实现的,推荐大家把kmp算法彻底弄明白了再做poj相关的几道题:2406 Power Strings 1961 Period 2752 Seek the Name, Seek the Fame。
该题的题意是这样的,给若干个字符串,判断该字符串最多重复了几次,比如,给ababab,结果是3,因为ab重复了3次,因为求最多重复了几次,所以结果不是1,在比如abcdabcd结果是2,abcd结果是1.
我们要根据kmp算法中的next函数来解决这个问题,以ababab为例加以说明:
String:ababab
Next:&0112345
这里根据后面的需要多计算了一位next值。
我们用ababab即作为主串有作为模式串来进行匹配,假设匹配到第7为时不匹配了(下标中1开始),要根据next[7](=5)的值继续匹配:
这样,我们用(length+1)-next[length+1]就是字符串向右移动的位数,在该例中为7-5=2.然后用总的长度除以这个向右移动的位数,如果能除尽的话,结果就是重复的次数,否则重复的次数为1.即:
if(length%((length+1)-next[length+1])==0)
&&&&&&&&&&&&&&&&&&& count=length/(length+1-next[length+1]);
&&&&&&&&&&&&&&&&&&& count=1;
在该例中为6/2=3.
因为这里的next下标从1开始,所以造成了对下标操作的复杂。
带有详细注释的代码可以在获得
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:166632次
积分:2273
积分:2273
排名:第6384名
原创:73篇
评论:118条
(1)(1)(7)(6)(15)(21)(1)(20)(1)当前位置:
> > 查看文章
KMP算法(养成篇) – 数据结构和算法36
KMP算法(养成篇)
让编程改变世界
Change the world by program
相信很多鱼油(包括小甲鱼自己)在刚开始接触KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。
KMP算法对大多数初学者来言是一项比较巨大的考验,特别是自学算法的朋友,很多资料对数学功底不牢固的学者来说看起来比较模糊。
所以,小甲鱼在讲解这一算法的实现前,特地添加了这一篇章:最高作战方针之算法思路养成篇!
KMP算法是三位老前辈(D.E.Knuth、J.H.Morris 和 V.R.Pratt)的研究结果,大大的避免重复遍历的情况,全称叫做克努特-莫里斯-普拉特算法,简称KMP算法或看毛片算法。
上节课我们谈了BF算法,也说了BF算法虽然很黄很暴力,但是效率却不搞。
我们也给了一个例子。但似乎那个例子不足以反映出导致这种算法效率低下的致命缺陷。
因此,我们用下边一个例子来继续探讨:
回溯就是坚持条条大路通罗马的决心,然后遇到挫折就回到跌倒的地方重新爬起来,继续往前,这种思想是好的,但效率是低的。
因为牛在耕田的时候也是这么想的,但人家袁隆平懂得找捷径,才有了超级杂交水稻,这也告诉我们鱼油,学习除了勤奋,除了必要坚持,还更需要思考!
KMP算法的核心就是避免不必要的回溯,那么什么是不必要的呢?问题由模式串决定,不是由目标决定!
思路启发一
思路启发二
分页阅读:
小甲鱼玩微博
更多新鲜事儿
加载中……考研数据结构KMP算法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
考研数据结构KMP算法|考​研​,​数​据​结​构​,​K​M​P​算​法​,​通​俗​易​懂
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢[整理III]微软等公司数据结构+算法面试第1-80题汇总             ---首次一次性汇总公布 由于这些题,实在太火了。所以,应广大网友建议要求,在此把之前已整理公布的前80题,现在,一次性分享出来。此也算是前80题第一次集体亮相。此些题,已有上万人,看到或见识到,若私自据为己有,必定为有知之人识破,付出代价。所以,作者声明:本人July对以上所有任何内容和资料享有版权,转载请注明作者本人July出...
    精选微软等数据结构+算法面试100题[第61-80题]                          --最新整理公布昨日,11.19,最新整理了,第61-80题,现在公布。可以这么说,绝大部分的面试题,都是这100道题系列的翻版,此微软等公司数据结构+算法面试100题系列,是极具代表性的经典面试题。我曾经暗暗问自己,不知道我是否把面试题基本上都搜集整理尽了,而当然,对你更重要的是,我自个还提供了答案下载,提供思路,呵。所以,这份资料+答案,在网上是独一无二的。闲不多说,接下来,你可以尽情的享用...
横空出世,席卷互联网                                                                         ---评微软数据结构+算法面试100题作者:July。时间:2010年10月-11月。版权所有,侵权必究。出处:http://blog.csdn.net/v_JULY_v。说明:本文原题为:“横空出世,席卷Csdn [评微软等公司数据...
 最新的第21题-40题的答案,已经公布上传,各位可以去下载了,:):[最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案]http://download.csdn.net/source/2832862其它整理资源,下载地址:[第1题-60题汇总]微软等数据结构+算法面试100题http://download.csdn.net/source/2826690[答案V0.2版]精选微...
       精选微软等公司数据结构+算法面试100题                  -----[第1题-60题总]  --------------------------------相关资源,下载地址:[第1题-60题汇总]微软等数据结构+算法面试100题http://download.csdn.net/source/2826690帖子维护地址:[整理]算法面试:精选微软经典的算法面...
精选微软等数据结构+算法面试100题 -------我很享受思考的过程,个人思考的全部结果,都放在了这篇帖子上,[整理]精选微软等数据结构+算法面试100题现在,我要,好好整理下,这篇帖子我已做出来的题目答案 了。展示自己的思考结果,我觉得很骄傲。:)。---------------------------------------------------------- 2010年 10月18日下午...
访问:7909261次
积分:36041
积分:36041
排名:第44名
原创:150篇
评论:12809条
①.本blog开通于日,高级C++/算法讨论组:。②.Google或百度上搜索:“结构之法”,进入本博客;Github上搜:“程序员编程艺术”,进入我的github主页。③.如有任何问题,欢迎通过微博联系,即@研究者July:,July,二零一四年九月二日。
文章:11篇
阅读:792339
文章:18篇
阅读:2246840
文章:32篇
阅读:1697760
文章:32篇
阅读:2050800
(4)(1)(1)(2)(2)(2)(2)(1)(1)(1)(1)(1)(1)(2)(1)(2)(2)(2)(5)(1)(7)(3)(11)(4)(7)(10)(7)(17)(11)(18)(14)(6)(5)

我要回帖

更多关于 数据结构kmp算法 的文章

 

随机推荐