HDU 3746 Cyclic Nacklace KMP

原创 2013年12月01日 20:33:34

题意:给出一个字符串,问还需要在后面添加多少个字符才能使它变成由一个前缀循环至少两遍而成。。

这边看到了一个写的很好的题解,还详细分析了next数组的作用,膜拜下。

代码:

/*
*  Author:      illuz <iilluzen[at]gmail.com>
*  Blog:        http://blog.csdn.net/hcbbt
*  File:        hdu3746.cpp
*  Create Date: 2013-12-01 20:01:20
*  Descripton:  kmp 
*/

#include <cstdio>
#include <cstring>

const int MAXN = 1e5 + 1;

char P[MAXN];
int f[MAXN];

void getVal(int l) {
	int i = 0, j = -1;
	f[0] = -1;
	while (i < l) {
		if (j == -1 || P[i] == P[j]) {
			i++; j++;
			f[i] = j;
		} else j = f[j];
	}
}

int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		scanf("%s", P);
		int len = strlen(P);
		getVal(len);
		if (f[len] <= 0)
			printf("%d\n", len);
		else if (len % (len - f[len]) == 0)
			puts("0");
		else {
			int l = len - f[len];	// 循环节的长度
			printf("%d\n", len / l * l + l - len);
		}
	}
	return 0;
}


KMP匹配问题、求字符串的周期、Cyclic Nacklace

本文中一共有3个问题,一共有3个求next的方法。 问题一,KMP匹配问题,用的是精确(高效)的求next的方法(来自紫红色的清华大学数据结构课本) 问题二,求字符串的周期,用的是自己写的求next的...
  • nameofcsdn
  • nameofcsdn
  • 2016年08月05日 19:14
  • 1263

解决Maven项目相互依赖/循环依赖/双向依赖的问题

很​多​时​候​随​着​项​目​的​膨​胀​,模​块​会​越​来​越​多​,如​果​设​计​上​ 稍​有​不​慎​就​会​出​现​模​块​之​间​相​互​依​赖​的​情​况​。​这​对​于​使​用​M...
  • Leolu007
  • Leolu007
  • 2016年11月08日 10:42
  • 5990

Tomcat 启动异常深度剖析

最近在使用tomcat 部署应用是遇到异常如下: Caused by: java.lang.IllegalStateException: Unable to complete the sc...
  • chndata
  • chndata
  • 2015年08月24日 10:53
  • 3974

HDU 3746 Cyclic Nacklace KMP求字符串最小循环节长度

题意:一个字符串,必须要有的重复串组成(至少重复两次),现在问在串的最后面至少填多少字母才能满足要求。 思路:先求出循环节的长度。利用KMP的nex数组求出循环节长度。 举个栗子: abcdeabcd...
  • xiangAccepted
  • xiangAccepted
  • 2017年06月19日 20:42
  • 298

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
  • 571

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
  • 315

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
  • 433

Cyclic Nacklace (HDU_3746) KMP + 循环节

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...
  • Keeping111
  • Keeping111
  • 2016年03月19日 19:57
  • 316

HDU 3746 Cyclic Nacklace(KMP 最少需要在结尾后面补几个字符才能凑成两个循环)

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...
  • LiuJiuXiaoShiTou
  • LiuJiuXiaoShiTou
  • 2017年04月18日 15:13
  • 240

【HDU3746】【KMP】Cyclic Nacklace 最少添加字符数使得原串出现循环节

#include #include #include #include #include #include #include #include #include #include #include #...
  • snowy_smile
  • snowy_smile
  • 2015年11月04日 21:16
  • 374
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 3746 Cyclic Nacklace KMP
举报原因:
原因补充:

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