POJ2406 Power Strings KMP-next数组的循环节
来源:互联网 发布:stereonet软件百度云 编辑:程序博客网 时间:2024/05/21 10:11
题目大意:给定一个字符串,让你找出该字符串的最大循环节。
分析:next数组的循环节问题。一开始我是暴力next数组的每一个值,找出其中满足循环的最大值,后来发现这样做不可行,因为对于aaaaaab这个字符串来说,他的循环节很明显为1,但aaaaaa这个子串的循环节是6,所以找出整个next数组的最大循环节就出错了。其实我们只需找出next[ len ]这一个值的循环节即可,因为这是个后缀,和这个后缀相同的循环体自然包含了整个字符串。
实现代码如下:
#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define maxn 1000005int next[maxn];char str[maxn];int len;void init_next(){ int i=0,j=-1; next[0]=-1; while(i<len) { if(j==-1||str[i]==str[j]) { i++; j++; next[i]=j; } else j=next[j]; }}void solve(){ len=strlen(str); init_next(); if(len%(len-next[len])==0) printf("%d\n",len/(len-next[len])); else puts("1");}int main(){ while(scanf("%s",str)&&str[0]!='.') solve(); return 0;}
0 0
- POJ2406 Power Strings KMP-next数组的循环节
- POJ2406 Power Strings(KMP next数组的运用)
- 【POJ2406】Power Strings-KMP中next数组的应用
- POJ2406-Power Strings(kmp循环节)
- poj2406 Power Strings(kmp求循环节)
- POJ2406 Power Strings(KMP,循环节)
- poj2406(KMP 求循环节的个数)Power Strings --
- poj2406--Power Strings(kmp:求循环串的次数)
- Power Strings(kmp next求循环节)
- POJ2406 Power Strings next数组应用
- 【poj2406】 Power Strings (KMP求循环节)
- poj2406--Power Strings(KMP求最小循环节)
- [poj2406]Power Strings(kmp求最小循环节)
- poj2406——Power Strings(KMP循环节)
- (POJ2406)Power Strings <KMP算法求最小循环节>
- 【KMP求最小循环节】POJ2406 Power Strings
- poj2406 Power Strings(kmp求最小循环节)
- [KMP][后缀数组] poj2406 Power Strings
- 如何利用闪回数据库特性恢复failover 后的dataguard 环境?
- 本地音乐播放器
- 利用HASHMAP对苹果称重
- LeetCode-1-Two Sum
- C#——随机显示图片
- POJ2406 Power Strings KMP-next数组的循环节
- jenkins服务器部署(一)——用户设置工作
- UINavigationItem,UIBarButtonItem,UITabBarItem 的总结
- springMVC提交表单中文乱码???问号
- UIView控件 属性和方法详解
- 【计算机基础知识】海量字符生成与匹配实现报告
- 在Visual Studio 2010中已经找不到直接创建WebService的模板方式
- 杭电5053
- Java反射之类的实例对象的三种表示方式