poj 2752 Seek the Name, Seek the Fame(理解KMP的失配函数!)

链接:

http://poj.org/problem?id=2752


题目大意:

给一个字符串S, 求出所有前缀pre,使得这个前缀也正好是S的后缀。 输出所有前缀的结束位置。

例如 “ababcababababcabab”, 以下这些前缀也同时是S的后缀

ab  :  位置2

abab  : 位置4

ababcabab : 位置9

ababcababababcabab : 位置 18


分析与总结:

这题,关键在于对KMP的失配函数的理解。只要真正理解了,那么做出来完全不成问题。

下面是后来在网上找的一个图片,很形象.  



代码:

#include
#include
#include
using namespace std;

const int MAXN = 400005;
char T[MAXN];
int  f[MAXN];
bool first;

void getFail(char* p,int* f){
    int n=strlen(p);
    f[0]=f[1]=0;
    for(int i=1; i




 ——  生命的意义,在于赋予它意义士。

          原创 http://blog.csdn.net/shuangde800 , By   D_Double  (转载请标明)





你可能感兴趣的:(解题报告,数据结构__字符串)