KMP算法
来源:互联网 发布:淘宝店铺模板源代码 编辑:程序博客网 时间:2024/06/03 18:13
KMP算法使用来弥补BF算法的不足(避免不必要的回溯)。避免的方法是由模式串决定(模式串自解),而不是又目标串决定。
http://poj.org/problem?id=3461
#include <stdio.h>#include <string.h>#define M 10010char strSour[M],strTarget[1000010];int next[M];int count;void getNext(){int i,j;int slen=strlen(strSour);for (j=next[0]=-1,i=1;i<slen;i++){while(j>-1 && strSour[j+1]!=strSour[i]) j=next[j];if (strSour[j+1]==strSour[i]){j++;}next[i]=j;}}void kmp(){int i=0,j=0;int slen,tlen;count=0;getNext();slen=strlen(strSour);tlen=strlen(strTarget);for (j=-1,i=0;i<tlen;i++){while(j>-1 && strSour[j+1]!=strTarget[i]) j=next[j];if (strSour[j+1]==strTarget[i]){j++;}if (j==slen-1){count++;j=next[j];}}}int main(){int n;scanf("%d",&n);while(n--){scanf("%s%s",strSour,strTarget);kmp();printf("%d\n",count);}return 0;}
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- C#程序设计(二十)----电子时钟
- css3 -webkit-animation与-webkit-keyframes
- VC6.0基础知识使用小结
- #pragma命令详解
- 为图片加水印-Java
- KMP算法
- Android ApiDemos示例解析(11):App->Activity->Receive Result
- SQL通过PIVOT/UNPIVOT实现行列转换
- 中国国旗图片生成代码-jsp版本
- 如何根据一个数组建立最大堆
- 敏捷软件开发宣言及敏捷宣言遵循的原则
- C++复制控制之复制构造函数(一)
- 补充,加水印程序有一个文件过滤器,可以选择指定的图片文件
- C++对象模型的演变及验证 (1)