kmp模板
2017-03-01 22:42
176 查看
void makenext(const char *p , int *next) { int i=1,k=0; int m = strlen(p); next[0] = 0; for(i=1,k=0; i<m; i++) { while(k>0 && p[i]!=p[k]) k = next[k-1]; if(p[i] == p[k]) { k++; } next[i] = k; } } int kmp(const char *T , const char *p, int *next) { int m1 = strlen(T); int m2 = strlen(p); int i,k,ans = 0; makenext(p,next); for(i=0,k=0; i<m1; i++) { while(k>0 && T[i]!=p[k]) k = next[k-1]; if(T[i] == p[k]) k++; if(k == m2) return true; } return false; }
相关文章推荐
- KMP模板
- KMP模板
- KMP && AC自动机模板
- hdu 1867 Cow Patterns kmp模板
- poj 3461 Oulipo (KMP 模板题)
- kmp模板---poj3461
- POJ3461 KMP 模板题
- [目前未找到题目]扩展KMP模板
- KMP模板
- 【字符串】KMP匹配模板
- HDU 1711 KMP模板
- 【模板】KMP
- KMP模板
- hdu 1711 Number Sequence(KMP模板题)
- 【HDU 1711】Number Sequence 【KMP 模板】
- HDU 2087 剪花布条(kmp模板)
- 扩展kmp入门+比赛模板
- HDU 3374 String Problem(最大最小表示法模板+KMP+next数组的运用)
- HDU-4847:Wow! Such Doge!(震惊!!!kmp模板题。。。kmp:我不要面子的啊)
- 扩展kmp模板