kmp
2014-05-19 19:55
218 查看
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define M 1000 void getFail(char * P, int * f) { int m = strlen( P ); f[0] = f[1] = 0; for(int i = 1; i < m; i++ ) { int j = f[i]; while( j && P[i] != P[j] ) j = f[j]; f[ i + 1 ] = P[ i ] == P[ j ] ? j + 1 : 0; } } void find(char * T, char * P, int *f) { int n = strlen( T ), m = strlen( P ); getFail(P, f); int j = 0; for(int i = 0; i < n; i++ ) { while(j && P[ j ] != T[ i ] ) j = f[ j ]; if( P[ j ] == T[ i ] ) j++; if( j == m ) printf("%d\n", i - m + 1); } } int main() { char t[M], p[M]; int f[M]; scanf("%s%s",t, p); find(t, p, f); return 0; }
相关文章推荐
- POJ 1961 Period(KMP next数组巧用)
- kuangbin专题十六 HDU1358 求KMP循环次数
- 【bzoj3620】 似乎在梦中见过的样子 KMP
- KMP
- hdu1711 Number Sequence(KMP水题)
- Codeforces Round #269 (Div. 2) D(KMP)
- PKU 2406:Power Strings 【KMP】
- 扩展KMP模板
- POJ2752Seek the Name, Seek the Fame (KMP)
- Revolving Digits HDU - 4333 (扩展kmp)
- HDOJ 2087 剪花布条 (KMP简单题)
- You're Given a String... (kmp)
- 周赛-一道签到题(kmp)
- Number Sequence(KMP)
- hdu 2087剪花布条 (KMP入门 子串出现的次数和子串个数)
- KMP初探·总结
- POJ 2752 Seek the Name, Seek the Fame (KMP的next函数运用)
- hdu1711 记录一个kmp模板
- 以后KMP就按照这个方式写了。看了kuangbin的写法
- POJ 3690 Constellations(二进制压位+KMP)