码迷,mamicode.com
首页 > 其他好文 > 详细

【KMP】Radio Transmission

时间:2018-09-14 17:25:03      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:数据   smi   一个   输入   pac   组成   c++   turn   min   

问题 L: 【KMP】Radio Transmission

时间限制: 1 Sec  内存限制: 128 MB
提交: 34  解决: 7
[提交] [状态] [讨论版] [命题人:admin]

题目描述

给你一个字符串,它是由某个字符串不断自我连接形成的。但是这个字符串是不确定的,现在只想知道它的最短长度是多少。

 

输入

第一行给出字符串的长度L,第二行给出一个字符串,全由小写字母组成。

 

输出

输出最短的长度。

 

样例输入

8
cabcabca

 

样例输出

3

 

提示

我们可以利用abc不断自我连接得到abcabcabc,读入的cabcabca是它的子串。

对于全部数据,1≤L≤106

#include <bits/stdc++.h>
 
using namespace std;
 
char p[1000005];
int lenp;
int Next[1000005];
void get_next()
{
    int i,j;
    Next[0] = j = -1;
 
    i = 0;
    while(i<lenp)
    {
        while(j!=-1&&p[j]!=p[i])
            j = Next[j];
        Next[++i] = ++j;
    }
}
 
int main()
{
    int n;
    cin>>n;
 
    scanf("%s",p);
    lenp = strlen(p);
 
    get_next();
//    for(int i=0;i<lenp;i++)
//    {
//        cout<<Next[i]<<" ";
//    }
    cout<<n-Next[n];
    return 0;
}

 

 

【KMP】Radio Transmission

标签:数据   smi   一个   输入   pac   组成   c++   turn   min   

原文地址:https://www.cnblogs.com/hao-tian/p/9647341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!