2406 Power Strings
来源:互联网 发布:软件测试如何学以致用 编辑:程序博客网 时间:2024/06/11 01:34
kmp 的入门题~
此题考察的对next[]数组的理解,明白了next[]数组的含义自然迎刃而解,但是题中有些容易错的地方
会代码中指出
例如 abababa这个例子
#include"iostream"#include"string.h"using namespace std;int next[1000005];char str[1000005];int len;void get_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]; }}int main(){ while(cin>>str&&strcmp(str,".")) { len=strlen(str); get_next(); if(next[len]==0)//这个地方最容易错,考虑考虑abababa这个例子 cout<<1<<endl; else if(len%(len-next[len])==0)//核心部分 cout<<len/(len-next[len])<<endl; else cout<<1<<endl; } return 0;}这个方程是怎么来的,其实就是next数组自匹配的一个理解
比如ababab
其next数组为 -1 0 01 2 3 4
我们看最后这个 next[6]==4这个数据
其意思是最前面的abab 与后面的abab相同
所以用len-next[len]是求出最小重复单元,就是ababab最中间的ab去掉~得到的ab就是最小单元
- poj 2406 "Power Strings"
- poj 2406 Power Strings
- Pku 2406 Power Strings
- POJ-2406 Power Strings
- POJ 2406 Power Strings
- poj 2406 Power Strings
- POJ:2406 Power Strings
- 2406 Power Strings
- poj 2406 Power Strings
- poj 2406 Power Strings
- poj 2406 Power Strings
- POJ 2406 Power Strings
- POJ 2406 - Power Strings
- poj 2406 Power Strings
- 2406 Power Strings
- poj 2406 Power Strings
- POJ 2406 Power Strings
- POJ 2406 Power Strings
- VC++--------光盘刻录
- 目录下的./bashrc文件的作用
- 舌尖上的大同
- XP 中配置 DNS——iis 头文件配置 DNS(XP),无须安装 DNS 服务器
- javascript修改textarea里的内容
- 2406 Power Strings
- 线程
- 基于mini2440的按键驱动分析与总结
- 一个基于mini2440的测试按键与led灯的测试程序
- 在fedora15的环境下编译与安装opencv,并测试人脸检测程序
- iOS 证书与签名 解惑详解
- iPhone 网络编程:使用stream建立通讯
- hibernate几乎所有数据库配置
- windows电脑常识