题解
这题又是一道KMP的题目
我一直认为自己的KMP学的很好,结果碰到这题后,我才明白,我对next数组依然不了解
这题其实就是求最小循环节
void getfail()
{
	int n=strlen(str);
	f[0]=f[1]=0;
	for (int i=1;i<n;++i)
	{
		int j=f[i];
		while(j && str[j]!=str[i])j=f[j];
		f[i+1]=str[i]==str[j]?1+j:0;
	}
}
然后再输出int l=strlen(str);
		printf("%d\n",l-f[l]);
最主要的是一点
不能用cin,cout
我一开始超时了,当时大惊,KMP都超时,那没有办法了,可是又看看程序,发现有cin,cout于是就改成个gets(),printf(),结果过了,当时心里多不爽啊,望大家小心
© 2015 HUST ACMICPC TEAM. All Right Reserved.