关闭

poj 2752 Seek the Name, Seek the Fame

标签: kmp
215人阅读 评论(0) 收藏 举报
分类:

总算对kmp有一点点了解了

next[j]表示1~j和len-j+1~len的字符相等,并且j!=i;


#include<iostream>
#include<cstring>
using namespace std;

char s[400004];
int len;
int p[400004];
int c[400004];
void init()
{
    int i,j;
    i=0;
    j=-1;
    p[0]=-1;
    while(i<len)
    {
        if(j==-1||s[i]==s[j])
        {
            p[++i]=++j;
        }
        else
            j=p[j];
    }
}

int main()
{
    while(cin>>s)
    {
        int k=0;
       int i,j;
       len=strlen(s);
       init(); 
       void kmp();
       i=len;
       while(p[i])
       {
           c[k++]=p[i];
            i=p[i];
       }
       for(j=k-1;j>=0;j--)
        {
            if(j==k-1)
           cout<<c[j];
            else
                cout<<' '<<c[j];
        }
       if(k==0)
       cout<<len<<endl;
       else
           cout<<' '<<len<<endl;
    }
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34773次
    • 积分:2105
    • 等级:
    • 排名:第18909名
    • 原创:156篇
    • 转载:5篇
    • 译文:1篇
    • 评论:1条
    文章分类
    最新评论