POJ 2752 Seek the Name, Seek the Fame
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2752 Seek the Name, Seek the Fame相关的知识,希望对你有一定的参考价值。
对字符串建一个next表,然后逆推即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 400005
using namespace std;
char p[maxn];
int next[maxn],t[maxn],l,tot=0;
void make_next()
{
memset(next,0,sizeof(next));
next[1]=0;
int cnt=0;
for (int i=2;i<=l;i++)
{
while (cnt>0 && p[i-1]!=p[cnt])
cnt=next[cnt];
if (p[i-1]==p[cnt]) cnt++;
next[i]=cnt;
}
}
void find()
{
t[++tot]=l;
int cnt=next[l];
while (cnt>0)
{
t[++tot]=cnt;
cnt=next[cnt];
}
for (int i=tot;i>=1;i--)
{
printf("%d ",t[i]);
t[i]=0;
}
printf("\n");
tot=0;
}
int main()
{
while (scanf("%s",p)!=EOF)
{
l=strlen(p);
make_next();
find();
}
return 0;
}
以上是关于POJ 2752 Seek the Name, Seek the Fame的主要内容,如果未能解决你的问题,请参考以下文章
POJ 2752 Seek the Name, Seek the Fame(KMP求公共前后缀)
POJ 2752 Seek the Name, Seek the Fame
POJ2752 Seek the Name, Seek the Fame
POJ 2752 Seek the Name, Seek the Fame