poj 1961 Period(kmp)
来源:互联网 发布:贷款抢单软件 编辑:程序博客网 时间:2024/06/05 01:11
题目链接:poj1961
题目大意:
给你一个字符串,求这个字符串到第i个字符为止的循环节的次数。
比如aabaabaabaab,长度为12.到第二个a时,a出现2次,输出2.到第二个b时,aab出现了2次,输出2.到第三个b时,aab出现3次,输出3.到第四个b时,aab出现4次,输出4.
解题思路:
这道题好像就是POJ 2406的加强版而已。那道题是输出一个字符串的循环节出现的次数,这个是到第i个字符为止,其实就是多了一层循环。把这个字符串遍历一次即可。
#include <stdio.h>#include <algorithm>#include <iostream>#include <string.h>using namespace std;#define maxn 2000100char s[maxn];int nexts[maxn];int n,m;void getnexts(){int j=0;int k=-1;nexts[0]=-1;while(j<m){if(k==-1||s[j]==s[k]){j++;k++;nexts[j]=k;}else k=nexts[k];}}int main(){int cas=1;while(~scanf("%d",&m)&&m){scanf("%s",s);getnexts();printf("Test case #%d\n",cas++);for(int i=2;i<=m;i++){if(i!=(i-nexts[i])&&i%(i-nexts[i])==0)printf("%d %d\n",i,i/(i-nexts[i]));}printf("\n");} return 0;}
阅读全文
0 0
- POJ 1961-Period (KMP)
- POJ 1961 Period(KMP)
- poj 1961 Period(kmp)
- POJ 1961 Period(KMP)
- poj 1961 Period(KMP)
- poj 1961 Period(KMP)
- POJ 1961 Period(KMP)
- POJ 1961Period (KMP)
- poj 1961 Period(kmp)
- poj 1961:Period (KMP)
- poj 1961 Period (KMP)
- poj 1961 Period---kmp
- POJ 1961-Period:KMP
- poj 1961 Period KMP
- poj 1961 Period(KMP)
- Period - POJ 1961 KMP
- POJ 1961 Period (KMP)
- POJ Period 1961【KMP】
- js框架
- 左神面试算法整理--并归求小和
- vue.js几种不同组件(页面)间传值的方式
- @Temporal——指定查询Date格式
- ros机器人操作系统
- poj 1961 Period(kmp)
- POJ-3021 e-Coins(广搜)
- json工具类
- CPU核数和多线程的关系
- ActiveMQ在数据中的表说明(queue,durable topic)
- Git LF和CRLF问题解决记录
- 正则表达式和通配符的区别
- echo命令有趣的颜色参数
- Android通过Enable动态设置color—color@res@Android