首页 > 代码库 > 求next数组代码

求next数组代码

 

代码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;}