KMP模板
2017-07-29 14:30
239 查看
hdu 2087即一道模板题,这个没有什么要注意的,处理相关类型的题目一定要灵活运用f[i]的性质。(本人参考的是刘汝佳大神的写法,在蓝书上P212可以找到详细解释)
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int MAX=1004; char T[MAX],W[MAX]; int n,m,f[MAX],sum; void getfail(char *W) { f[0]=f[1]=0; for (int i=1;i<m;i++) { int j=f[i]; while (j&&W[j]!=W[i]) j=f[j]; f[i+1]=W[i]==W[j]?j+1:0; } } void kmp(char *T,char *W) { getfail(W); int j=0; for (int i=0;i<n;i++) { while (j&&T[i]!=W[j]) j=f[j]; if (T[i]==W[j]) j++; if (j==m) sum++,j=0; } } int main() { while (scanf("%s%s",T,W)&&T[0]!='#') { n=strlen(T),m=strlen(W),sum=0; kmp(T,W); printf("%d\n",sum); } return 0; }
相关文章推荐
- hdu3336Count the string(KMP的next[]数组的应用+KMP模板)
- POJ3461 KMP 模板题
- HDU 1711 Number Sequence (KMP模板题)
- 【KMP】 模板
- hdu 1711 Number Sequence(kmp模板题)
- 洛谷P3375 【模板】KMP字符串匹配
- KMP模板与讲解
- 【字符串】KMP匹配模板
- KMP模板
- POJ 3461 Oulipo (KMP模板题)
- P3375 【模板】KMP字符串匹配(全程注释,简单易懂)
- KMP简单模板
- HDU1711 ——Number Sequence(KMP模板题)
- P3375 【模板】KMP字符串匹配
- poj 3461 Oulipo(KMP模板题)
- 扩展KMP总结(模板题hdu2594)
- KMP模板
- KMP 模板
- KMP,扩展KMP模板
- HDU - 1711 Number Sequence (KMP模板)