KMP poj 2752 Seek the Name, Seek the Fame

原创 2013年12月03日 12:33:11

     深入理解KMP中的next,当我们求完next之后,len为字符串S的长度, 令j = next[len],k = next[j],则有:S[j-k+1, j] = S[len-k+1, len],就是根据这个思路来求解这个问题;


#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

const int MAXN = 400010;

int next[MAXN];

void Get_next(char* str)
{
    int i = 0, j = -1;
    next[0] = -1;
    int len = strlen(str);
    while(i < len)
    {
        if(j == -1 || str[i] == str[j])
        {
            ++i;
            ++j;
            next[i] = j;
        }
        else
            j = next[j];
    }
}

int main()
{
    char str[MAXN];
    while( ~scanf("%s", str) )
    {
        Get_next(str);
        int len = strlen(str);
        int k = 0, i = len;
        int sum[MAXN];
        sum[0] = len;
        while(next[i] > 0)
        {
            sum[++k] = next[i];
            i = next[i];
        }
        for(i = k; i >= 0; i--)
            cout<<sum[i]<<" ";
        cout<<endl;
    }
    return 0;
}


版权声明:本文为博主原创文章,转载需注明出处。

POJ2752 Seek the Name, Seek the Fame【字符串匹配+KMP】

Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submiss...
  • tigerisland45
  • tigerisland45
  • 2016年06月26日 23:36
  • 1445

POJ 2752 Seek the Name, Seek the Fame KMP

Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submiss...
  • kdwycz
  • kdwycz
  • 2014年01月26日 18:13
  • 474

poj 2752 Seek the Name, Seek the Fame 【kmp】

题目链接:http://poj.org/problem?id=2752题意:求即是前缀有是后缀的子串有几个,输出长度。思路:考察next数组的性质。具体见代码。#include #include...
  • u014427196
  • u014427196
  • 2015年06月05日 18:15
  • 299

|poj 2752|KMP|Seek the Name, Seek the Fame

poj传送门/* poj 2752 教训: 1、注意f数组的意思就是前缀和后缀最长公共部分长度,灵话运用解题 */ #include #include #include #i...
  • Darost
  • Darost
  • 2017年04月09日 12:08
  • 502

POJ 2752 Seek the Name, Seek the Fame (KMP)

(KMP 模板)给一个字符串S, 求出所有前缀pre,使得这个前缀也正好是S的后缀。 输出所有前缀的结束位置。Seek the Name, Seek the Fame Time Limit: ...
  • shouwang_tomorrow
  • shouwang_tomorrow
  • 2015年08月10日 14:03
  • 254

[poj 2752] Seek the Name, Seek the Fame[KMP]

题意: 求字符串S的, 既是前缀串, 又是后缀串的子串. 思路: next数组的应用. #include #include #include using namespace std; c...
  • zhangliang011258
  • zhangliang011258
  • 2013年09月09日 10:54
  • 752

Seek the Name, Seek the Fame POJ - 2752 KMP

The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the l...
  • YCQ_Lancet
  • YCQ_Lancet
  • 2017年08月16日 11:06
  • 81

poj 2752 Seek the Name, Seek the Fame KMP

题意:给一个字符串str,求出既是前缀又是后缀的所有长度。这一题是KMP的next数组的应用。...
  • u014422052
  • u014422052
  • 2014年10月19日 11:00
  • 1070

POJ 2752 Seek the Name, Seek the Fame (KMP)

Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1725...
  • a2459956664
  • a2459956664
  • 2016年08月20日 08:42
  • 323

poj 2752 Seek the Name, Seek the Fame【KMP】

点击打开题目 Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K T...
  • u012678352
  • u012678352
  • 2014年11月30日 01:56
  • 993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:KMP poj 2752 Seek the Name, Seek the Fame
举报原因:
原因补充:

(最多只允许输入30个字)