2016夏季练习——KMP
来源:互联网 发布:传奇网络 编辑:程序博客网 时间:2024/05/29 08:39
来源:POJ3461
KMP一水,学了好几天
代码:
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int MAXN = 10010;int nxt[MAXN];char m[MAXN];char p[MAXN*100];int lenm,lenp;void get_next(){ int i=0,j; memset(nxt,0,sizeof(nxt)); nxt[0]=j=-1; while(i<lenm){ if(j==-1||m[i]==m[j]){ i++;j++; if(m[i]!=m[j]){ nxt[i] = j; } else nxt[i] = nxt[j]; } else j = nxt[j]; }}int ans=0;void kmp(){ int i,j; i=j=0; while(i<lenp){ if(j==-1||m[j] == p[i]){ i++; j++; } else j=nxt[j]; if(j==lenm){ ans++; j = nxt[j]; } }}int main(){int T;scanf("%d",&T);getchar();while(T--){ gets(m); gets(p); lenm = strlen(m); lenp = strlen(p); //cout<<m<<endl<<p<<endl; get_next(); ans = 0; kmp(); cout<<ans<<endl;}return 0;}
1 0
- 2016夏季练习——KMP
- 2016夏季练习——KMP
- 2016夏季练习——KMP
- 2016夏季练习——KMP
- 2016夏季练习——KMP
- 2016夏季练习——搜索
- 2016夏季练习——搜索
- 2016夏季练习——搜索
- 2016夏季练习——搜索
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——dp
- 2016夏季练习——数论
- 压缩或者解压带密码的ZIp包
- 【HDU5748 BestCoder Round 84B】【LIS模板 最长单调上升子序列】Bellovin 以尾端点最长LIS压缩数组
- Gson的使用方法
- 总共介绍两种游标 cursor 与 sys_refcursor
- STM32-USMART调试组件
- 2016夏季练习——KMP
- Android apk重签名
- Linux命令之应用
- mysql常用函数汇总(分享)
- 【HDU5749 BestCoder Round 84C】【ST-RMQ?NO!暴力跳法or单调栈法 + 贡献思维】Colmerauer 所有子矩阵size乘鞍点权值和
- 【无线】基础概念
- 35 个 Java开发代码性能优化总结
- java基础 - 自定义复制(I/O流, 集合 File类)
- iOS开发的一些奇巧淫技