您的位置:首页 > 其它

【POJ2752】Seek the Name, Seek the Fame(KMP)

2017-03-26 08:54 309 查看
题目:

我是超链接

题解:

失配等于本身的后缀,而且失配的失配一定是原式的后缀

代码:

#include <cstdio>
#include <cstring>
using namespace std;
int t[400005],l,ans[400005],tot=0;char st[400005];
void sp()
{
int i,j;
t[0]=-1;
l=strlen(st);
for (i=0;i<l;i++)
{
j=t[i];
while (j!=-1 && st[i]!=st[j]) j=t[j];
t[i+1]=++j;
}
}
int main()
{
while (gets(st))
{
sp();
int j=l,i;
memset(ans,0,sizeof(ans));
tot=0;
while (j!=-1)
{
ans[++tot]=j;
j=t[j];
}
for (i=tot-1;i>=1;i--)
printf("%d ",ans[i]);
printf("\n");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: