HDU-1358 Period (kmp)
来源:互联网 发布:朋友圈关系网软件 编辑:程序博客网 时间:2024/05/18 00:07
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1358题意:
给出一段序列,求这段字符串的所有前缀中有哪些是循环串,输出这些前缀的位置和循环周期。
思路:
与hdu3746基本相同,就是利用next[]数组来求循环节长度判断是否是循环串。代码:
#include <bits/stdc++.h>#define PI acos(-1.0)#define INF 0x3f3f3f3f#define MOD 1000000007#define EPS 1e-6#define N 1123456using namespace std;int n,m,sum,res,flag;void getNext(char *pre, int len, int *next){ int i = 0,j = -1; next[0] = -1; while(i < len) { if(j == -1 || pre[i] == pre[j]) { i++,j++; next[i] = j; } else j = next[j]; }}char s[N];int main(){ int i,j,k,kk,cas,T,t,x,y,z; cas=0; while(scanf("%d",&n)!=EOF&&n) { printf("Test case #%d\n",++cas); scanf("%s",s); n=strlen(s); int a[n+1]; getNext(s,n,a); for(i=2;i<=n;i++) { t=i-a[i]; if(i!=t&&i%t==0)printf("%d %d\n",i,i/t); } printf("\n"); } return 0;}
0 0
- 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】
- 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)
- HDU 1358 Period [kmp]
- hdu 1358 Period(KMP循环)
- Java代码注释规范
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解1
- 磁力链接的BASE32编码向HEX编码的转换
- HDU 4614 Vases and Flowers (线段树 + 二分)
- LeetCode 40 - Combination Sum II
- HDU-1358 Period (kmp)
- nyoj A*B Problem II 623 (矩阵相乘)
- yocto配置好eclipse之后编译多线程配置
- 【tyvj1863】【codevs1995】黑魔法师之门,有毒的并查集
- Oracle 11g R2 RAC高可用连接特性 – SCAN详解2
- nginx的常用命令
- EDA 和 SOA 的融合以及实践
- JAVA中使用JSON进行数据传递
- Linux正常关机命令