频道栏目
首页 > 资讯 > 其他 > 正文

Cyclic Nacklace (kmp中next数组的运用)

17-06-08        来源:[db:作者]  
收藏   我要投稿

Cyclic Nacklace (kmp中next数组的运用)。
【题意】
题意是给出一个字符串,要求变成一个周期串,最少需要几个字符?
【思路】
也不知道怎地,想到了next数组,数组里记录的数字可以看成是一个周期。
举例说明:
字符串abcabcabc
next数组:0 0 0 1 2 3 4 5 6
而字符串abcabc
next数组:0 0 0 1 2 3
因为有大于0的数字的说明前面有重复的,并且,若是连续出现这样的会数字,说明一直连续,那不就是周期串了吗。。只需要字符总个数减去最后一位的next值,就可以得到最小循环周期,当然,可能会想这样的例子:
abcabcabcaca
0 0 0 1 2 3 4 5 6 7 0 1
那么这个字符串的最小周期是几呢?
答案是11。
【代码】

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int mod=1e9+7;
const double esp=1e-5;
typedef unsigned long long ll;
typedef long long LL;
char s[100000+10];
int ne[100000+10];
int n,maxx;
void get_next()
{
    int i=0,j;
    j=ne[0]=-1;
    while(i
        
   
相关TAG标签
上一篇:如何将Emmet安装到到Sublimetext3?
下一篇:排序之三:简单选择排序(C语言实现)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站