博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2406 Power Srings (kmp循环节) (经典)
阅读量:5250 次
发布时间:2019-06-14

本文共 866 字,大约阅读时间需要 2 分钟。

<>

题目大意:

给出一个字符串,求其字串在该字符串中循环的最大周期。

解题分析:

length=len-Next[len],len为该字符串的最小循环节,如果len%length==0,那么周期就为len/lenght,如果不能整除,则说明该字符串的字串不具有周期性,输出1。

 KMP最小循环节的证明 

#include 
#include
const int maxn = 1000000 + 100;char str[maxn];int Next[maxn];void get_next(){ int j = 0, k = -1; Next[0] = -1; while (str[j]) { if (k == -1 || str[j] == str[k]) Next[++j] = ++k; else k = Next[k]; }}int main(){ while (scanf("%s", &str) != EOF) { if (str[0] == '.')break; get_next(); int len = strlen(str); int length = len - Next[len]; //最小循环节,注意,要弄清楚循环节的含义 if (len%length == 0) { printf("%d\n", len / length); } else printf("1\n"); } return 0;}

 

2018-08-05

转载于:https://www.cnblogs.com/00isok/p/9427886.html

你可能感兴趣的文章
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>