hdu1358 kmp
来源:互联网 发布:潜入朝鲜知乎 编辑:程序博客网 时间:2024/09/21 06:18
题意:
给出一个字符串,求它循环的每个位置和循环的周期。
如aabaabaabaab,第六个位置b,aab是一个循环,共有两个循环,故输出6 2
第二个位置,a是一个循环,共有两个循环,故输出2 2
匹配,kmp,只有本身一个串,得到next数组再判断
//求循环周期#include<stdio.h>#include<string.h>#define maxn 1000010int next[maxn];char str[maxn];void getnext(char *str,int len){int i=1,j=0;next[1]=0;while(i<=len){if(j==0||str[i]==str[j]) next[++i]=++j;else j=next[j];}}int main(){ int T=1,len; while(scanf("%d",&len)!=EOF) { if(len==0)break; memset(next,0,sizeof(next)); scanf("%s",str+1); getnext(str,len); printf("Test case #%d\n",T++); for(int i=2;i<=len+2;i++) { int num=i-(next[i+1]-1);//相隔多少个字母if(i!=num&&i%num==0)//整除了,说明是周期的 printf("%d %d\n",i,i/num); } printf("\n"); } return 0;}
0 0
- hdu1358 KMP
- KMP HDU1358
- hdu1358 kmp
- HDU1358-kmp
- Period hdu1358 KMP
- hdu1358 period ,Kmp
- hdu1358 Period kmp+模拟
- hdu1358 Period(kmp)
- HDU1358 Period【KMP】
- hdu1358 Period(kmp周期)
- hdu1358 Period--KMP
- hdu1358 KMP循环节
- HDU1358 Period(KMP)
- HDU1358-Period(KMP)
- HDU1358 Period(KMP)
- hdu1358(KMP+最小循环节)
- HDU1358.cpp(KMP学习)
- 【hdu1358】Period——KMP
- poj2245Lotto(最基础的dfs)
- html中submit和button的区别(总结)
- Swift 编程语言的析构过程
- zookeeper的一致性协议
- 输入6个字符串,并对它们按从小到大的顺序排序后输出。
- hdu1358 kmp
- JQuery防止退格键网页后退
- oracle中实现break和continue
- 随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中。
- hdoj1040 As Easy As A+B
- 深入理解C++中的mutable关键字
- 找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没鞍点),打印出有关信息。
- 15.10 Spiral Matrix
- A Simple Math Problem 矩阵乘法