读书人

Kmp求next的值(下标从零开始的)

发布时间: 2013-10-27 15:21:50 作者: rapoo

Kmp求next的值(下标从0开始的)

#include<iostream>#include<cstring>#include<cstdio>using namespace std;int next[100];int n;int Next(string a){   int i,j;   next[0]=-1;   next[1]=0;   for(i=2;i<n;i++)   {       j=next[i-1];       while(j!=-1 && a[i-1]!=a[j])       {           j=next[j];       }       next[i]=j+1;   }}int main(){    int i;   string a;   while(cin>>a)   {       n=a.size();       //cout<<n<<endl;       Next(a);       for(i=0;i<n-1;i++)        cout<<next[i]+1<<" ";        cout<<next[i]+1<<endl;   }   return 0;}

读书人网 >编程

热点推荐