P串是不动的,S会移动,起始位置为0,i比j大几次,就移动几次,从而S就从0移动几次作为初始
//KMP暴力做法
int solve(char P[],int n,char S[],int m) //P为模式串,S为主串
{
int count=0,count1=0,i,j;
for(i=0;i+n<=m;i++) //循环终止条件是“你可以挨着个查,但你不能超范围”
{
count1=0;
for(j=0;j<n;j++)
{
if(P[j]==S[i+j])
{
count1++;
}
}
if(count1==n)
count++;
}
return count;
}
//暴力做法的优化做法
int solve(char P[],int n,char S[],int m)
{
int i,j,count=0;
for(i=0;i+n<=m;i++) //理解成为个数,即p加上i的个数不能超过m个
{ //而i是角标含义,从而借助数量推出角标i的范围
for(j=0;j<n;j++)
if(P[j]!=S[i+j]) //这里也验证了角标极限范围:i+n-1<=n-1
break;
if(j==n)
count++;
}
return count;
}