hdu 3746 Cyclic Nacklace (kmp算法)

来源:互联网 发布:金融行业的数据分析 编辑:程序博客网 时间:2024/06/04 00:09

求周期串,从末尾开始观察是否有周期串,没有就加一个和p[i]+1相等的字符,直到出现周期串


#include<iostream>#include<string>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;string a;int len;int p[100005];int init(){    int i,j;    i=0;    j=-1;    p[0]=-1;    while(i<a.size())    {        if(j==-1||a[i]==a[j])        {            p[++i]=++j;        }        else            j=p[j];    }    int t=p[i];    while(t==0||i%(i-t)!=0)//找循环节    {        i++;        t++;     }    return (i-a.size());}int main(){    std::ios::sync_with_stdio(false);    int t;    cin>>t;    while(t--)    {        cin>>a;        len=a.size();        int i;        int ans=0x3f3f3f3f;        ans=min(ans,init());        reverse(a.begin(),a.end());        cout<<min(ans,init())<<endl;    }    return 0;}


0 0
原创粉丝点击