poj1961—Period(kmp周期性质)
来源:互联网 发布:域名解析记录值 端口 编辑:程序博客网 时间:2024/05/17 22:31
传送门:点我
Sample Input
3aaa12aabaabaabaab0
Sample Output
Test case #12 23 3Test case #22 26 29 312 4题意:给一个字符串判断前缀是否构成周期串,输出周期串长度和周期数
知识点:如果一个字符串有最小周期,那么循环节为n-next[n],周期数为n / (n-next[n])
证明:http://blog.csdn.net/zz_ylolita/article/details/50650394
贴代码:
#include<iostream>#include<cstdio>#include<cstring>#define N 1000005using namespace std;char s[N];int Next[N];void getnext(int n){ int i,j,len; for(j=0,i=1; i<n; i++) { while(j>0&&s[i]!=s[j]) j=Next[j-1]; if(s[i]==s[j]) j++; Next[i]=j; if(Next[i]!=0) { len=i+1; if(len%(len-Next[i])==0) printf("%d %d\n",len,len/(len-Next[i])); } }}int main(){ int t,cat=0; while(scanf("%d",&t),t) { Next[0]=0; scanf("%s",s); int len=strlen(s); printf("Test case #%d\n",++cat); getnext(len); cout<<endl; }}
阅读全文
0 0
- poj1961—Period(kmp周期性质)
- [POJ1961]Period(KMP)
- [POJ1961] Period/[NKOI2201] 周期
- KMP及其next数组性质学习小记 Poj1961 Period
- LA3026 POJ1961 period 字符串周期(KMP) POJ2406 Power Strings
- poj1961——Period(KMP循环节)
- poj1961 & hdu 1358 Period(KMP)
- 【KMP】 poj1961 Period
- poj1961 Period----KMP
- poj1961 Period (KMP)
- KMP POJ1961 Period
- poj1961 Period(KMP)
- POJ1961 Period(KMP)
- poj1961--Period(KMP求最小循环节)
- (POJ1961)Period <KMP算法求最小循环节>
- poj1961——Period
- HDU 1358 Period (kmp求周期)
- poj 1961 Period(KMP求周期)
- hdu 3061 Battle (最小割最大流 --->最大闭合子图)
- 编写程序从键盘得到三个整数,找出其中的最大数(升级版)
- python爬虫进阶(十):日志系统、守护线程以及验证码处理
- 投资人读一份BP只用3分44秒,你还敢不认真准备吗?
- Oracle数据库如何优化已成为了很多人头痛的课题
- poj1961—Period(kmp周期性质)
- node.js 基础笔记1——URL网址解析
- [kuangbin带你飞]专题一 简单搜索 D
- sqoop安装配置
- 初学mysql基本语句
- 关于对vuex使用过程中的一些心得体会
- 2017ACM暑假训练总结
- 【剑指offer】面试题 57:和为 S 的数字
- jsp中el表达式获取不到值