POJ 2752

Posted idi0t-n3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2752相关的知识,希望对你有一定的参考价值。

关于MP(非KMP)算法中出现的mpnext数组的应用

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

const int maxs= 4e5+3;

char s[maxs];
int nxt[maxs];
int ans[maxs];

void PreKmp(int l)
{
    int i= 0, j;
    j= nxt[0]= -1;

    while (i< l){
        while (j> -1 && s[i]!= s[j]){
            j= nxt[j];
        }
        nxt[++i]= ++j;
    }
}

int main()
{
    while (EOF!= scanf(" %s", s)){
        int ls= strlen(s);
        PreKmp(ls);
        int la= 0, j= ls;

        while (j> 0){
            ans[la++]= j;
            j= nxt[j];
        }
        while (la--){
            printf("%d ", ans[la]);
        }
        putchar('
');
    }
    return 0;
}

以上是关于POJ 2752的主要内容,如果未能解决你的问题,请参考以下文章

POJ2752题解——KMP入门

poj 2752

POJ_2752 Seek the Name, Seek the Fame KMP

POJ 2752

poj 2752(拓展KMP模板题)

poj2752 Seek the Name, Seek the Fame