HDU 2087 KMP裸题

来源:互联网 发布:淘宝网商城女鞋休闲鞋 编辑:程序博客网 时间:2024/05/16 19:50
#include<stdio.h>#include<string.h>#define N 1005int f[N], ans;char P[N], T[N];void getFail(int len){int i, j;j = f[0] = -1;i = 0;while(i < len){while(j!=-1 && P[i]!=P[j])j = f[j];i++, j++;if(P[i] == P[j])f[i] = f[j];else f[i] = j;}}void KMP(int Tlen, int Plen){int i, j;i = 0, j = 0;getFail(Plen);while(i < Tlen){while(j!=-1 && P[j] != T[i])j = f[j];i++, j++;if(j >= Plen){ans++;j = 0;}}}int main(){while(scanf("%s", T), T[0] != '#'){scanf("%s", P);ans = 0;KMP(strlen(T), strlen(P));printf("%d\n",ans);}return 0;}

1 0