[BZOJ1355][Baltic2009]Radio Transmission(kmp)

题目描述

传送门

题解

kmp求失配,答案应为位数减去末位失配。

代码

#include
#include
#include
using namespace std;
#define N 1000005

char s[N];
int n,T[N];

void calc_T()
{
    T[0]=-1;
    for (int i=0;iint j=T[i];
        while (j!=-1&&s[i]!=s[j])
            j=T[j];
        T[i+1]=++j;
    }
}
int main()
{
    scanf("%d\n",&n);
    gets(s);
    calc_T();
    printf("%d\n",n-T[n]);
}

你可能感兴趣的:(题解,kmp)