HDU 3746 Cyclic Nacklace(KMP)

来源:互联网 发布:mindmanager注册机mac 编辑:程序博客网 时间:2024/05/20 16:42



KMP求最短循环节的应用

//2100 KB218 ms#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define M 100000+1000char str[M];int next2[M];int len;void getnext(){    len=strlen(str);    int i=0,j;    j=next2[0]=-1;    while(i<len)    {        while(j!=-1&&str[i]!=str[j]) j=next2[j];        j++;        i++;        next2[i]=j;    }}int main(){    int T;    scanf("%d",&T);    while(T--)    {        scanf("%s",str);        getnext();        int ans=(len-next2[len])-len%(len-next2[len]);        if(len%(len-next2[len])==0&&len/(len-next2[len])>1) printf("0\n");        else printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击