KMP 求next的值(下标从一开始的)

来源:互联网 发布:网络语言古文翻译 编辑:程序博客网 时间:2024/04/24 18:55
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int next[100];int Next(char a[],int n){   int i,j;   next[1]=0;   next[2]=1;   for(i=3;i<=n;i++)   {       j=next[i-1];       while(j!=0 && a[i-1]!=a[j])       {           j=next[j];       }       next[i]=j+1;   }   return 0;}int main(){    int i;    int nn;    char a[100];   while(cin>>nn)   {       for(i=1;i<=nn;i++)          cin>>a[i];       Next(a,nn);       for(i=1;i<=nn;i++)        cout<<next[i]<<" ";       // cout<<next[i]<<endl;   }   return 0;}