您的位置:首页 > 其它

HDOJ 2087 剪花布条【KMP】

2011-11-19 06:43 239 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1001
int next[MAX];
char s[MAX], q[MAX];
void getNext(char s[])
{
int i, j;
j = -1;
next[0] = -1;
for(i=1; i<strlen(s); i++)
{
while(j >= 0 && s[j+1] != s[i])
j = next[j];
if(s[j+1] == s[i])
j++;
next[i] = j;
}
}
int main()
{
int i, j, ans;
while(scanf("%s %s", s, q) && s[0] != '#')
{
ans = 0;
getNext(q);
j = -1;
for(i=0; i<strlen(s); i++)
{
while(j >= 0 && q[j+1] != s[i])
j = next[j];
if(q[j+1] == s[i])
j++;
if(j == strlen(q)-1)
{
ans++;
j = -1;
}
}
printf("%d\n", ans);
}

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  include system