代码1:i 从 1 开始
#include<iostream> using namespace std; const int maxn=8;//输入的字符个数 int main() { int i,j; int next[10]; char t[100]; for(i=1;i<=maxn;i++) cin>>t[i]; i=1; next[1]=0; j=0; while(i<=maxn) { if(j==0 ||t[i]==t[j]) { i++; j++; next[i]=j; } else j=next[j]; } for(i=1;i<=maxn;i++) cout<<next[i]<<‘ ‘; cout<<endl; return 0; }
代码2:i 从 0 开始
#include<iostream> #include<cstring> using namespace std; int main() { int i,j; int next[10]; char t[100]; cin>>t; i=0; next[0]=-1; j=-1; while( i<strlen(t) ) { if(j==-1 ||t[i]==t[j]) { i++; j++; next[i]=j; } else j=next[j]; } for(i=0;i<strlen(t);i++) cout<<next[i]<<‘ ‘; cout<<endl; return 0; }
原文地址:http://www.cnblogs.com/bofengyu/p/3909793.html