无线传输
标准kmp
1 #include<cstdio> 2 using namespace std; 3 const int maxn=1111111; 4 int n,kmp[maxn]; 5 char ss[maxn]; 6 int main() 7 { 8 scanf("%d%s",&n,ss+1); 9 int j=0; 10 for(int i=2;i<=n;++i) 11 { 12 if(j&&ss[i]!=ss[j+1]) j=kmp[j]; 13 if(ss[i]==ss[j+1]) ++j; 14 kmp[i]=j; 15 } 16 printf("%d",n-kmp[n]); 17 return 0; 18 }