Codeforces 625B【KMP】
2016-12-11 21:46
337 查看
题意就是一个串在另一个串出现几次,但是字符不能重复匹配, 比如aaaaaaa aaaa的答案是1
思路:
本来写了个暴力过的,然后觉得KMP改改就好了,就让队友打了一个;
思路:
本来写了个暴力过的,然后觉得KMP改改就好了,就让队友打了一个;
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAX=1000010; int n,m; char a[MAX],b[MAX]; int nextval[MAX]; LL ans; void get_next(char b[],int m) { int i=0; nextval[0]=-1; int j=-1; while(i<m) { if(j==-1||b[i]==b[j]) { ++i; ++j; if(b[i]==b[j]) nextval[i]=nextval[j]; else nextval[i]=j; } else j=nextval[j]; } } void KMP(char a[],int n,char b[],int m,int nextval[],int pos) { int i=pos; int j=0; while(i<n) { if(j==-1||a[i]==b[j]) { i++; j++; if(j==m) //修改处 { j=0; ans++; } } else j=nextval[j]; } } int main() { int t,i,j; while(~scanf("%s%s",a,b)) { int p; ans=0; n=strlen(a); m=strlen(b); get_next(b,m); KMP(a,n,b,m,nextval,0); printf("%lld\n",ans); } return 0; }
相关文章推荐
- sparkstreaming输入测试(网络端口数据)
- 最大k乘积
- mysql数据库导入导出
- 文件上传利器SWFUpload入门简易教程
- ES6-set && 数组剔重
- Android中的进程间通信(IPC机制)
- 幸运的中奖者AOJ493
- centos6.5下Apache 安装
- 关于算法复杂度的分析与算法奇偶交换
- Linux CentOS 安装Java环境
- jQuery对象小结
- response返回的json数据的list对象返回错误
- C#总结之异常处理
- 最小m段和
- 笔记:JDBC(Java DataBace Connectivity)
- js之完美运动框架
- Git@OSC通过Eclipse生成SSH keys RSA公钥私钥
- linux c之htpasswd
- Hibernate-hibernate 中 Long 与 int 的转换
- Shell中的正则表达式