回复 2楼 embed_xuel
请教为啥用全局变量就好了啊?
2011-09-21 17:24
2011-09-21 17:56
2011-09-21 18:04
2011-09-21 18:05
2011-09-21 18:06
程序代码:#include<stdio.h>
#include<string.h>
char a[1000001];
char b[10001];
int main()
{
int n,i,j,next[20001],lena,lenb,cont;
scanf("%d",&n);
while(n--)
{
scanf("%s",b);
scanf("%s",a);
lena=strlen(a);
lenb=strlen(b);
next[0]=-1;
next[1]=0;
for(i = 2;i<=lenb;i++)
{
if(b[next[i-1]] == b[i-1])
next[i] = next[i-1]+1;
else
next[i] = 0;
}
i=0;
j=0;
cont=0;
while(i<lena)
{
if(-1 == j || a[i] == b[j])
{
i++;j++;
if(j==lenb)
{
cont++;
i-=next[lenb];
j = 0;
}
}
else
j = next[j];
}
printf("%d\n",cont);
}
return 0;
}kmp算法 效率已经很高了 这里感谢草狼兄弟的教导
2011-09-21 21:02
2011-09-21 22:29
2011-09-21 22:31
2011-09-21 22:47

2011-09-21 22:50