Pku acm 1961 Period数据结构题目解题报告(十九)----kmp算法
来源:互联网 发布:sublime知乎 编辑:程序博客网 时间:2024/05/17 22:16
关于kmp算法,大家都非常熟悉,其涵义非常难懂,以至于我学习kmp算法的时候一直怀疑自己的智商,其具体思想,这里就不多说了,网上也有很多资料,我用的是严蔚敏老师的书,实现也是按说上的方法实现的,推荐大家把kmp算法彻底弄明白了再做poj相关的几道题:2406 Power Strings 1961 Period 2752 Seek the Name, Seek the Fame。
该题的题意是这样的,给若干个字符串,判断该字符串的前n位最多重复了几次,比如,给ababab,结果是前4位重复了2次,前6位重复了3次,忽略重复一次的情况.现在我们将注意力放在一个给定的字符串重复了多少次,然后做一个循环就可以求出所有的结果。
我们要根据kmp算法中的next函数来解决这个问题,以ababab为例加以说明:
String:ababab
Next: 0112345
这里根据后面的需要多计算了一位next值。
我们用ababab即作为主串有作为模式串来进行匹配,假设匹配到第7为时不匹配了(下标中1开始),要根据next[7](=5)的值继续匹配:
ababab*
ababab&
ababab*
ababab
这样,我们用(length+1)-next[length+1]就是字符串向右移动的位数,在该例中为7-5=2.然后用总的长度除以这个向右移动的位数,如果能除尽的话,结果就是重复的次数,否则重复的次数为1.即:
for(k=2;k<=length;k++)
{
if(k%((k+1)-next[k+1])==0)
{
count=k/((k+1)-next[k+1]);
if(count!=1)
printf("%d %d/n",k,count);
}
}
在该例中为6/2=3.
因为这里的next下标从1开始,所以造成了对下标操作的复杂。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/china8848/archive/2008/04/29/2342698.aspx
- Pku acm 1961 Period数据结构题目解题报告(十九)----kmp算法
- Pku acm 1961 Period数据结构题目解题报告(十九)----kmp算法
- Pku acm 2406 Power Strings数据结构题目解题报告(十八)----kmp算法
- Pku acm 2406 Power Strings数据结构题目解题报告(十八)----kmp算法
- pku 1961 KMP period 解题报告
- Pku acm 2752 Seek the Name, Seek the Fame数据结构题目解题报告(二十)----kmp算法
- Pku acm 2752 Seek the Name, Seek the Fame数据结构题目解题报告(二十)----kmp算法
- Pku acm 2485 Highways数据结构题目解题报告(三) ----最小生成树:prim算法
- Pku acm 1258 Agri-Net数据结构题目解题报告(四) ----最小生成树:prim算法
- Pku acm 2253 Frogger数据结构题目解题报告(六)—单源最短路径:Dijkstra算法
- Pku acm 1062 昂贵的聘礼 数据结构题目解题报告(七)—单源最短路径:Dijkstra算法
- Pku acm 1125 Stockbroker Grapevine 数据结构题目解题报告(八)---- 弗洛伊德(floyd)算法
- Pku acm 1125 Stockbroker Grapevine 动态规划题目解题报告(十九)
- Pku acm 1861 NetWork 数据结构题目解题报告(二) ----最小生成树:prim算法&amp;Kruskal算法
- Pku acm 1469 COURSES 数据结构题目解题报告(十一)---- 匈牙利算法求二分图的最大匹配
- Pku acm 2239 Selecting Courses 数据结构题目解题报告(十二)---- 匈牙利算法求二分图的最大匹配
- Pku acm 1274 The Perfect Stall 数据结构题目解题报告(十三)---- 匈牙利算法求二分图的最大匹配
- Pku acm 2536 Gopher II 数据结构题目解题报告(十四)---- 匈牙利算法求二分图的最大匹配
- 有关嵌套注释的问题
- 常用Java开源库
- istream/ostream
- linux下释放cache内存
- Pku acm 2752 Seek the Name, Seek the Fame数据结构题目解题报告(二十)----kmp算法
- Pku acm 1961 Period数据结构题目解题报告(十九)----kmp算法
- 应用OSCache提升J2EE系统运行性能
- 月薪三万的面试题
- 使用自动生成Mipmap时遇到的一些问题
- Pku acm 2406 Power Strings数据结构题目解题报告(十八)----kmp算法
- 数据结构笔记3 线性表的链式表示
- WSUS(Windows Server Update Services)注册表配置
- C#中解决zedgraph右键菜单的中文问题
- 魅力资中行(图)