kmp 的next 数组求法

#include <iostream>
using namespace std;
int main()
{string a ;
cin>>a;
int i,next[100];
//主要程序
next[0]=-1;
i=0;
int j=-1;
while(i<a.length())
{
    if(j==-1||a[i]==a[j])
    {i++;
    j++;
    next[i]=j;

    }
    else {j=next[j];}

 

}
//
cout<<" ";
for(i=0;i<a.length();i++)
    cout<<a[i]<<" ";
cout<<endl;
for(j=0;j<i;j++)
    cout<<next[j]<<" ";
cout<<endl;
    return 0;
}

posted @ 2014-07-23 18:31  冷夏的博客园  阅读(124)  评论(0编辑  收藏  举报