HDU - 1358 Period(KMP next数组)
来源:互联网 发布:软件总体设计方案 编辑:程序博客网 时间:2024/05/20 18:44
题目大意:给你一个字符串,要求你找出所有的循环部分。找出循环部分指的是前i个字符都是由循环节构成,且至少要由两个循环节构成,并输出循环节出现的次数
解题思路:next数组和循环节的概念了,理解了就会了
#include <cstdio>#include <cstring>const int N = 1000010;int len;char str[N];int next[N];void getFail() { next[0] = -1; int i = 0, j = -1; while (i < len) { if (j == -1 || str[j] == str[i]) { i++; j++; next[i] = j; } else j = next[j]; }}void solve() { for (int i = 2; i <= len; i++) { int t = i - next[i]; if (t != i && i % t == 0) printf("%d %d\n", i, i / t); }}int main() { int cas = 1; while (scanf("%d", &len) != EOF && len) { printf("Test case #%d\n", cas++); scanf("%s", str); getFail(); solve(); printf("\n"); } return 0;}
0 0
- HDU - 1358 Period(KMP next数组)
- 1358 Period hdu kmp的next数组运用
- hdu 1358 Period(KMP之next数组)
- HDU 1358 Period(KMP+next数组的运用)
- 【next数组应用】HDU 1358 Period
- HDOJ 1358 Period(KMP next数组运用)
- HDU--杭电--1358--Period--KMP--next值的应用
- HDU 1358 Period (next跳表找最小循环节)KMP
- HDOJ1358 Period 【KMP next数组应用】
- HDOJ1358 Period (KMP next数组应用)
- HDU 1358 Period (KMP)
- HDU 1358 Period KMP
- hdu 1358 Period KMP
- hdu 1358 Period(KMP)
- HDU 1358 Period KMP
- 【HDU】1358 Period KMP
- HDU 1358 Period (KMP)
- hdu-1358 Period 【kmp】
- Ubuntu启动碰到waitting for network configuration 或者 up to 60s的问题
- 初识VR
- Java类初始化顺序
- win32 进程创建、查看和限制
- poj2135网络流费用入门
- HDU - 1358 Period(KMP next数组)
- C语言基础(六)数组
- FastCGI
- 使用API方式操作数据库
- mybatis blob 操作
- UVA31727个六边形填数a
- JS操作iframe(一)
- C语言基础(七)指针
- 聚类