标签:des style blog http io color ar os sp

3 aaa abca abcde
0 2 5
KMP算法找循环节:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
typedef long long LL;
using namespace std;
#define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define REP( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define CLEAR( a , x ) memset ( a , x , sizeof a )
char str[100000+100];
int next[100000+100];
int n,len;
void get_next(char *s)
{
int i=0,j=-1;
next[0]=-1;
while(i!=len)
{
if(j==-1||s[i]==s[j])
next[++i]=++j;
else j=next[j];
}
}
int main()
{
std::ios::sync_with_stdio(false);
cin>>n;
while(n--)
{
cin>>str;
len=strlen(str);
get_next(str);
for(int i=0;i<=len;i++)
cout<<"2333 "<<next[i]<<endl;
int l=len-next[len];
if(l!=len&&len%l==0)//l==len表示str不是循环的.
cout<<0<<endl;
else
cout<<l-next[len]%l<<endl;
}
return 0;
}
HDU 3746 Cyclic Nacklace (KMP找循环节)
标签:des style blog http io color ar os sp
原文地址:http://blog.csdn.net/u013582254/article/details/40950705