HDU 1358 Period [kmp]
来源:互联网 发布:sql server2012r2下载 编辑:程序博客网 时间:2024/06/08 12:55
题意:给你一个字符串,求所有前缀循环次数大于等于2次的前缀
题解:对next数组的理解。next数组就是求当前位置的后缀与从头开始的前缀匹配程度,设j=i-next[i],若i%j==0说明肯定有循环节,且循环长度为j,次数为i/j。
AC代码:
#include<stdio.h>#include<string.h>#define N 1000005char a[N],b[N];int next[N];void get_next(int l){ next[0]=-1; int i=1,j=0; while(i<l) { if(j==-1||b[i]==b[j]) next[++i]=++j; else j=next[j]; }}int main(){ int n; int e=1; while(~scanf("%d",&n)) { if(n==0)break;; scanf("%s",b); int l=strlen(b); get_next(l); printf("Test case #%d\n",e++); for(int i=1;i<=l;i++) if(next[i]!=0&&i%(i-next[i])==0) printf("%d %d\n",i,i/(i-next[i])); printf("\n"); }}
阅读全文
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循环)
- Spring Boot(二):从Session中获取域对象的三种方法
- Linux解压缩文件,安装文件
- HTML5利用canvas绘制动态信号瀑布图
- HDU6181-Two Paths【A*算法or次短路】
- 机器学习之KNN(k-nearest-neighbor)算法
- HDU 1358 Period [kmp]
- 19 插入数据
- 智能指针之使用空指针错误
- 去掉百度地图api图标信息
- 数据库-增删改查
- 点分治详细解析
- Spring Web MVC(二)
- Unity3D之OnGUI知识总结
- MySQL基础