HDU 3746 Cyclic Nacklace KMP的性质应用

原创 2012年03月23日 01:17:07

前面做过类似的题了,所以切出这个来也很简单。

关于KMP的小应用,KMP的next数组的作用就是用来记录前面的串的状态的。

可以用Len-next[Len]得出当前点的循环节。。。

这个还是很好理解的。

好了KMP在切掉POJ的就在此告一段落了。。。。

#include<iostream>
using namespace std;

char t[111111];
int next[111111];
int LenT;

void setNext()
{
     int j=0,k=-1;
     next[0]=-1;
     while( j<LenT )
     {
            if( k==-1||t[j]==t[k] )
                next[++j]=++k;
            else
                k=next[k];
     }
}

int main()
{
    int T;
    scanf( "%d",&T );
    while( T-- )
    {
           scanf( "%s",&t );
           LenT=strlen(t);
           setNext();
           int loop=LenT-next[LenT];
           
           if( next[LenT]==0 )
               printf( "%d\n",LenT );
           else if( loop==1 || LenT%loop==0 )
               printf( "0\n" );
           else
               printf( "%d\n",(LenT/(loop)+1)*loop-LenT );
    }
    return 0;
} 


版权声明:本文为博主原创文章,转载请写明出处。

相关文章推荐

HDU3746 Cyclic Nacklace(KMP_Next的应用)

题意:给一个字符串,求再在后面添加几个字符串可以使得整个字符串循环。 #include #include #include #include #include #include #inc...

HDU 3746 Cyclic Nacklace 利用 KMP的next数组求循环节

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...
  • wr132
  • wr132
  • 2015年08月08日 17:00
  • 398

HDU3746--Cyclic Nacklace (Kmp)

Description CC always becomes very depressed at the end of this month, he has checked his credit c...
  • Dorlife
  • Dorlife
  • 2017年06月14日 17:54
  • 124

hdu3746 Cyclic Nacklace--KMP

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=3746 一:原题内容 Problem Description CC always become...
  • LaoJiu_
  • LaoJiu_
  • 2016年03月18日 20:43
  • 365

Cyclic Nacklace (HDU_3746) KMP + 循环节

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

hdu 3746 Cyclic Nacklace(KMP)

题意:给出一个串,问最少在串末尾添加几个字符,才能让串中出现循环。 思路:这题要很好的理解next数组的性质才行,构造完next数组以后,有这样一个性质:字符串的最小循环节的长度为len-n...
  • qian99
  • qian99
  • 2014年01月25日 17:58
  • 585

hdu 3746 Cyclic Nacklace(KMP)

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

HDU 3746 Cyclic Nacklace (KMP)

题目链接:点我 CC always becomes very depressed at the end of this month, he has checked his credit card ye...
  • cccruel
  • cccruel
  • 2017年08月05日 09:26
  • 87

HDU3746 Cyclic Nacklace(KMP)

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

HDU 3746 Cyclic Nacklace(KMP:补齐循环节)

HDU 3746 Cyclic Nacklace(KMP:循环节) http://acm.hdu.edu.cn/showproblem.php?pid=3746 题意:给你一个串,要你在串头或尾添加最...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 3746 Cyclic Nacklace KMP的性质应用
举报原因:
原因补充:

(最多只允许输入30个字)