POJ-3461(KMP模版题)
2017-10-03 15:29
435 查看
poj3461,原题链接:POJ挂了贴不出来
题目大意:给一个主串和子串,求子串在主串中出现的次数;
思路:
KMP模版题,代码如下:
题目大意:给一个主串和子串,求子串在主串中出现的次数;
思路:
KMP模版题,代码如下:
#include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> using namespace std; const int N=1e6+10; char T ; char P ; int next ; int sum; void Getnext() { int j=-1; int i=0; int len=strlen(P); next[0]=-1; while(i<len) { if(j==-1||P[i]==P[j]) { i++; j++; next[i]=j; } else j=next[j]; } } void kmp() { int n,m; int i,q; n = strlen(T); m = strlen(P); for (i = 0,q = 0; i < n; ++i) { while(q > 0 && P[q] != T[i]) q = next[q]; if (P[q] == T[i]) { q++; } if (q == m) { sum++; } } } int main() { int K; scanf("%d",&K); while(K--) { sum=0; for(int i=0;i<=N;i++) { next[i]=0; } scanf("%s%s",P,T); Getnext(); kmp(); cout<<sum<<endl; } }
相关文章推荐
- POJ 3461 Oulipo (KMP,求模版串在文本串中可覆盖出现的次数,constructive)
- poj 3461:Oulipo(KMP模版)
- poj 3461 Oulipo(KMP)
- POJ 3461 Oulipo(KMP)
- POJ 3461 裸的KMP
- POJ-3461-Oulipo-KMP
- poj-3461 Oulipo KMP
- E - Oulipo POJ - 3461(KMP)
- poj-3461 kmp重叠匹配
- POJ 3461 KMP
- POj 3461 Oulipo ,HDU 1686 Oulipo(KMP)
- POJ 3461 Oulipo(KMP模板题)
- poj 3461 Oulipo(数据结构:kmp)
- poj 3461 Oulipo kmp 预处理
- poj 3461 Oulipo(KMP)
- poj 3461 Oulipo(kmp统计子串出现次数)
- POJ 3461 Oulipo(KMP模板)
- poj 3461 字符串单串匹配--KMP或者字符串HASH
- POJ 3461 KMP
- POJ 3461 Oulipo【KMP】【模板题】(找出第一个字符串在第二个字符串中出现次数)