poj 3461 Oulipo 字符串匹配 KMP算法
2015-08-10 21:46
232 查看
题意:这道题是问有多少跟目的串匹配的字串,感觉跟今年深圳杯数模的B:DNA分子序列 一样诶~ 不过当时做那道题时用的是RK算法
题解:这道水题改改模版就好了,不过我刚开始顺手改成了递归的kmp()。。。居然。。。 TLE。。了。。。0.0。。。 下面是非递归的AC代码。。。有阴影了,以后递归能不用就不用。。。
。。。
题解:这道水题改改模版就好了,不过我刚开始顺手改成了递归的kmp()。。。居然。。。 TLE。。了。。。0.0。。。 下面是非递归的AC代码。。。有阴影了,以后递归能不用就不用。。。
。。。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N = 1000010; const int M = 10010; int nxt[M]; char P , T[M]; int n,m; int ans; void getnext(){ int j, k; j = 0; k = -1; nxt[0] = -1; while(j<m){ if (k==-1 || T[j]==T[k]){ nxt[++j] = ++k; } else{ k = nxt[k]; } } } void kmp(int j){ int k; k = 0; while(j<n){ if (k==-1 || T[k]==P[j]){ ++k;++j; if(k==m) ans++; } else{ k = nxt[k]; } } } int main() { int t; scanf("%d", &t); while(t--){ scanf("%s%s",&T,&P); n=strlen(P); m=strlen(T); getnext(); ans=0; kmp(0); printf("%d\n",ans); } return 0; }
相关文章推荐
- java下读取键盘输入的简单方法
- 谈Apache OFbiz 会员模块表结构设计
- 两道笔试编程题(求水仙数和求平方根数组之和)
- Linux C语言程序设计(十一)——Mac上编写与编译C文件
- 梦想在路上
- COJ 0346 WZJ的旅行(二)更新动态树分治版本
- 一步一步学习SignalR进行实时通信_2_Persistent Connections
- Spring面试问答
- poj 3723 Conscription(最大生成树)
- 老友记高清十季全
- 用过滤器过滤全站非法字符
- kmp(第二次个人赛)*(重复次数->长度最长)
- 搜索和搜索形式(SEARCHING and its forms)
- ASP.NET并发处理
- 【Powershell】【AD】AD属性的修改
- JQuery根据字母检索元素并导航到指定位置
- hdu 1133 Buy the Ticket
- I - Control - HDU 4289 (最大流)
- 滚动数组
- js倒计时如火车站买火车票后15分钟必须付款否则取消火车票