hdu 1358 KMP运用
来源:互联网 发布:linux命令查看进程 编辑:程序博客网 时间:2024/04/28 04:57
题意:求前缀的循环周期。
示例:abababab
前4个字符,循环字串为ab,有2个循环周期 ab|ab
前6个字符,循环字串为ab,有3个循环周期 ab|ab|ab
前8个字符,循环字串为ab,有4个循环周期 ab|ab|ab|ab
输出:
4 2
6 3
8 4
当i=6时,next[4] = 4;
循环字串的长度 = next[i] - (2 * next[i] - i) = 2 //2*next[i]-i 为相交长度
循环字串的周期 = i / 循环字串的长度
#include <iostream>using namespace std;const int MAXN = 1000010;char str[MAXN];int next[MAXN];int main(){int n;int Case = 1;while(cin>>n,n){cin>>str;int j = -1;int i = 0;next[0] = -1;while(i < n){if(j == -1 || str[i] == str[j]){i++;j++;next[i] = j;}else{j = next[j];}}printf("Test case #%d\n",Case++);for(int i=1; i<=n; i++){int cross = 2*next[i] - i; //相交部分的长度int circle = next[i] - cross; //循环长度if(cross >= 0 && i % circle == 0) {printf("%d %d\n",i,i/circle);}}printf("\n");}return 0;}
- hdu 1358 KMP运用
- hdu 1841 KMP运用
- hdu 3613 扩展KMP运用
- 1358 Period hdu kmp的next数组运用
- HDU 1358 Period(KMP+next数组的运用)
- HDU 2594Simpsons’ Hidden Talents(KMP运用)
- hdu 2087(KMP的简单运用)
- HDU - 1686 Oulipo KMP匹配运用
- Hdu 2087 kmp算法的运用
- HDU 3746(KMP)next数组的运用
- HDU 1358 KMP运用 求某串中所有循环前缀串的长度和循环次数
- kmp入门--kmp运用
- 剪花布条 hdu 2087 KMP算法的简单运用
- hdu 4513 KMP里next数组的运用
- HDU 1358 Period (KMP)
- hdu 1358 KMP
- hdu 1358 kmp
- hdu 1358 KMP
- linux 计算程序运行时间
- 了解一下Flex 4里的fx、mx以及s命名空间(转)
- IE中setAttribute的疑惑
- MySQL 水平分区方案Spock Proxy
- EXTjs 的ajax返回的response对应url中的数据,
- hdu 1358 KMP运用
- Android 往自己的APP加入文件
- jquery treeView工具 简单树形目录工具
- Android的/system/lib里加入自己的so库
- PL/SQL学习笔记
- 简单的Ruby 类
- C#中var关键字用法(收藏)
- Getting Started Tutorial for WCF
- centos linux 增加硬盘步骤