POJ 3461 Oulipo(KMP统计子串出现次数)
2017-07-26 21:58
337 查看
题目链接:poj3461
题目大意:
典型的KMP 统计模式串在主串中出现的次数
题目大意:
典型的KMP 统计模式串在主串中出现的次数
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; #define maxn 1000010 #define mem(a,val) memset(a,val,sizeof (a) ) char w[maxn],t[maxn]; int wlen,tlen; int nexts[maxn]; void getnexts() { int j,k; j=0; k=-1; nexts[0]=-1; while(j<wlen) { if(k==-1||w[j]==w[k]) { nexts[++j]=++k; } else k=nexts[k]; } } int kmp() { int ans=0; int i,j; if(wlen==1&&tlen==1) { if(w[0]==t[0])return 1; else return 0; } getnexts(); for(i=0,j=0;i<tlen;i++) { while(j>0&&t[i]!=w[j]) j=nexts[j]; if(t[i]==w[j]) j++; if(j==wlen) { ans++; j=nexts[j]; } } return ans; } int main() { int cas; scanf("%d",&cas); while(cas--) { mem(nexts,0); scanf("%s%s",w,t); wlen=strlen(w); tlen=strlen(t); printf("%d\n",kmp()); } return 0; }
相关文章推荐
- POJ 3461 Oulipo(KMP统计子串出现次数)
- poj 3461 Oulipo(kmp统计子串出现次数)
- POJ 3461 Oulipo(KMP:统计一个串出现的次数)
- POJ 3461 Oulipo (KMP字符串匹配·统计p在s中出现次数)
- POJ 3461 Oulipo【KMP,子串出现次数,可重叠】
- POJ 3461 Oulipo【KMP】【模板题】(找出第一个字符串在第二个字符串中出现次数)
- POJ 3461 Oulipo (KMP,求模版串在文本串中可覆盖出现的次数,constructive)
- poj3461—Oulipo(查找子串在目标串中出现次数)
- POJ 3461 Oulipo(KMP 模板 一个串在另一个串出现的次数(可重叠|不可))
- [KMP求模式在主串出现次数]POJ 3461 Oulipo
- (串的模式匹配4.6.2)POJ 3461 Oulipo(KMP算法的应用——求一个单词在一行文本中的出现次数)
- POJ-2406 Power Strings(KMP求重复子串出现的最大次数)
- kmp统计子串出现次数
- POJ 3461 Oulipo(KMP求匹配次数)
- POJ 3461 Oulipo(模式串在主串中出现的次数)
- 【KMP算法】KMP统计子串出现次数
- POJ 3461 Oulipo (求模式串在文本串中出现的次数)
- 阿里天池的新任务(简单)(KMP统计子串出现的次数)
- HDU 1686 Oulipo (KMP——统计模式串出现次数)
- POJ 3461 KMP 模板题 字串出现次数