天天看點

[bzoj 1355--Baltic2009]Radio Transmission

給你一個字元串,它是由某個字元串不斷自我連接配接形成的。 但是這個字元串是不确定的,現在隻想知道它的最短長度是多少.

這道題有大bug,提示亂寫,其實樣例循環節為“cab”。這題跟poj 2406很像,隻不過poj要求全部循環,而這題隻要求部分就行。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
char s[];
int p[];
int main()
{
    int n;
    scanf("%d",&n);
    scanf("%s",s+);
    p[]=;int j=;
    for(int i=;i<=n;i++)
    {
        while(j> && s[i]!=s[j+])j=p[j];
        if(s[i]==s[j+])j++;
        p[i]=j;
    }
    printf("%d\n",n-p[n]);
    return ;
}