博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1358 (所有前缀中的周期串) Period
阅读量:5103 次
发布时间:2019-06-13

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

题意:

给出一个字符串,在所有长度大于1的前缀中,求所有的周期至少为2的周期串,并输出一个周期的长度以及周期的次数。

分析:

有了上一题 HDU 3746 的铺垫,这道题就很容易解决了

把next求出来,然后逐个判断即可。

1 #include 
2 #include
3 4 const int maxn = 1000000 + 10; 5 char p[maxn]; 6 int n, next[maxn]; 7 8 void get_next() 9 {10 int k = -1, j = 0;11 next[0] = -1;12 while(j < n)13 {14 if(k == -1 || p[k] == p[j])15 {16 k++;17 j++;18 next[j] = k;19 }20 else k = next[k];21 }22 }23 24 int main(void)25 {26 //freopen("1358in.txt", "r", stdin);27 int kase = 0;28 while(scanf("%d", &n) == 1 && n)29 {30 memset(next, 0, sizeof(next));31 scanf("%s", p);32 getchar();33 get_next();34 35 printf("Test case #%d\n", ++kase);36 for(int i = 2; i <= n; ++i)37 {38 if(next[i] == 0) continue;39 int cir = i - next[i];40 if(i % cir == 0)41 printf("%d %d\n", i, i / cir);42 }43 puts("");44 }45 46 return 0;47 }
代码君

 

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4111426.html

你可能感兴趣的文章
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
java 中的线程(一)
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
万能的SQLHelper帮助类
查看>>