KMP大法好。
#include<iostream>
using namespace std;
#include<bits/stdc++.h>
void kmp_pre(char x[],int m,int next[])
{
int i,j;
j=next[0]=-1;
i=0;
while(i<m)
{
while(-1!=j && x[i]!=x[j]) j=next[j];
next[++i]=++j;
}
}
int KMP_Count(char x[],int m,char y[],int n) //x是子串,y是父串
{
int i,j;
int ans=0;
int next[10010];
kmp_pre(x,m,next);
i=j=0;
while(i<n)
{
while(-1!=j && y[i]!=x[j]) j=next[j];
i++;j++;
if(j>=m)
{
ans++;
j=next[j];
}
}
return ans;
}
int main()
{
char a[10010];
char b[10010];
gets(a);
gets(b);
int count=KMP_Count(b,strlen(b),a,strlen(a),);
cout<<count;
return 0;
}