这个总觉得有点奇怪?会不会不像kmp?
#include<iostream>
using namespace std;
const int Max=20;
int KMP(char S[],char T[])
{
int i,j;
i=0;
j=0;
int next[10];
next[2]=0;
next[1]=0;
next[0]=-1;
int count=0;
if(S[i]=='\0'&&T[i]=='\0')
{
cout<<"数为空!"<<endl;
return 0;
}
for(i=0;i<Max;)
{
if(S[i]==T[j]){i++;j++;}
else{j=next[j];i++;j++;count++;}
if(T[j]=='\0')
{
cout<<"在第"<<count<<"次后成功!"<<endl;
return 0;
}
}
return 0;
}
int main()
{
char S[]="abacabcdad";
char T[]="abcd";
KMP(S,T);
return 0;
}