回复 2楼 embed_xuel
请教为啥用全局变量就好了啊?
#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算法 效率已经很高了 这里感谢草狼兄弟的教导