KMP算法
来源:互联网 发布:类似葫芦侠的软件 编辑:程序博客网 时间:2024/06/05 17:15
KMP算法
主要参考《数据结构与算法》——许卓群,这本书中对KMP算法的讲解比较详细,而且易于理解。
#include<iostream>#include<string>using namespace std;void findnext(string &P,int *next){int n=P.size();if(n==0)return;next[0]=0; int i=1;while(i<n){int k=next[i-1];while(k>0 && P[i]!=P[k])k=next[k-1];if(P[i]==P[k])next[i]=k+1;elsenext[i]=0;i++;}}int KMP(string &P,string &S,int *next){int n=P.size();int m=S.size();if(m<n)return 0;int i=0,j=0;int cnt=0;for(i=0;i<m;i++){while(P[j]!=S[i] && j>0)j=next[j-1];if(P[j]==S[i])j++;if(j==n){cnt++;j=0;}}return cnt;}int main(){int N;cin>>N;int *cnt=new int[N];string *S=new string[2*N];for(int i=0,k=0;i<2*N;i++,k++){cin>>S[i];int n=S[i].size();int *next=new int[n];findnext(S[i],next);i++;cin>>S[i];cnt[k]=KMP(S[i-1],S[i],next);delete [] next;next=NULL;}for(int i=0;i<N;i++)cout<<cnt[i]<<endl;delete [] cnt;delete [] S;S=NULL;return 0;}
题目:http://hihocoder.com/problemset/problem/1015
0 0
- KMP算法详解 【KMP】
- 【KMP】KMP算法模板
- KMP hihoCoder1015 KMP算法
- kmp算法
- KMP算法
- KMP算法
- KMP算法
- KMP算法
- KMP 算法
- kmp算法
- KMP算法
- kmp算法
- KMP算法
- KMP算法
- kmp算法
- kmp算法
- KMP算法
- KMP算法
- 输出九宫格
- linux配置ftp服务,最简单快速的方法(vsftpd)
- ORACLE 各种PARTITION 和select * from update wait time
- 第十七周项目4日期结构体
- IIS添加网站虚拟目录出错
- KMP算法
- vim中php自动补全
- discuz如何关闭个人空间
- c 数组 和 数组指针
- IOS开发之──ASIHTTPRequest详解
- Android中关于APK对遥控器支持的修改
- js打开新窗口的各种方法
- word中段落里面的选项“如果定义了文档网格,则对齐到网格”起什么作用?
- Intellij IDEA 13.1.5 部分汉化包