poj 2406 Power Strings(KMP)
来源:互联网 发布:mac 怎么恢复u盘的文件 编辑:程序博客网 时间:2024/05/01 00:44
题目链接:
http://poj.org/problem?id=2406
题目大意:
给出一个字符串,这个字符串一定能够以a^n表示。现在问n最大为多少。
思路:
对于这个字符串来说,我可以算出他的next数组,然后能够得到这整个字符串的最大前缀和后缀相同的值next[len]。然后可以发现len-next[len]就是这个a的长度。所以就自己猜了一下= =如果len%(len-next[len])==0,就是len/(len-next[len])。否则就是1。
代码:
#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>using namespace std;int min(int a,int b){ return a>b?a:b;}int next[1050005]; char s[1050005];void GetNext(char* p,int next[],int l){ // memset(next,0,sizeof(next)); int pLen = l; next[0] = -1; int k = -1; int j = 0; while (j < pLen ) { //p[k]表示前缀,p[j]表示后缀 if (k == -1 || p[j] == p[k]) { ++j; ++k; next[j] = k; } else { k = next[k]; } }}int main(){ while(scanf("%s",s)!=EOF) { memset(ans,0,sizeof(ans)); if(s[0]=='.')break; int x; int l=strlen(s); x=l; GetNext(s,next,x); x=x-next[x]; if(l%x==0) printf("%d\n",l/x); else printf("1\n"); } return 0;}
0 0
- poj 2406 Power Strings---kmp
- POJ 2406 Power Strings KMP
- poj-2406-Power Strings-kmp
- POJ-2406 Power Strings KMP
- Power Strings - POJ 2406 KMP
- poj 2406 Power Strings kmp
- POJ 2406-Power Strings (KMP)
- 【KMP】 POJ 2406 Power Strings
- poj 2406 Power Strings KMP
- POJ 2406 Power Strings KMP
- poj 2406 Power Strings KMP
- poj 2406 Power Strings (KMP)
- [2406]Power Strings (POJ) KMP
- Power Strings (poj 2406 KMP)
- poj 2406 Power Strings【KMP】
- POJ 2406 Power Strings(KMP)
- poj-2406 Power Strings 【kmp】
- POJ 2406--Power Strings【KMP】
- springmvc + ajaxFileUpload多文件上传
- 概率事件触发
- UIKit与Quartz2D绘图技术
- 网格部件设置字段样式的智能向导不起作用??
- jsp页面中修改html元素内容关于单双引号的错误笔记
- poj 2406 Power Strings(KMP)
- Verilog中task使用
- Android获取时间戳,以及将时间戳转换为时间
- 【leetcode】119. Pascal's Triangle II
- IAP 的问题汇总
- commons-beanutils的copyProperties方法
- Android——最佳性能实战
- 功能代码片段:JAVA获取本机IP地址
- hdoj2048(神、上帝以及老天爷