KMP poj 2752 Seek the Name, Seek the Fame
2013-12-03 12:33
309 查看
深入理解KMP中的next,当我们求完next之后,len为字符串S的长度, 令j = next[len],k = next[j],则有:S[j-k+1, j] = S[len-k+1, len],就是根据这个思路来求解这个问题;
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAXN = 400010; int next[MAXN]; void Get_next(char* str) { int i = 0, j = -1; next[0] = -1; int len = strlen(str); while(i < len) { if(j == -1 || str[i] == str[j]) { ++i; ++j; next[i] = j; } else j = next[j]; } } int main() { char str[MAXN]; while( ~scanf("%s", str) ) { Get_next(str); int len = strlen(str); int k = 0, i = len; int sum[MAXN]; sum[0] = len; while(next[i] > 0) { sum[++k] = next[i]; i = next[i]; } for(i = k; i >= 0; i--) cout<<sum[i]<<" "; cout<<endl; } return 0; }
相关文章推荐
- HTML语言的一些元素(五)
- 安卓实现拨号功能
- 聊聊并发(三)——JAVA线程池的分析和使用
- 上游
- [flex & bison]编译器杂谈
- C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)
- uva 11300 - Spreading the Wealth(数论)
- jquery easyui 没有出效果
- MySQL数据库表设计优化
- 在线程中UpdateData
- 2013.12.02
- 随记:我们需要怎样的数学教育?
- 计算球体积
- os内存使用管理之unix-AIX篇
- poj 2462 Period of an Infinite Binary Expansion
- 空罐Cans (ac自动机 dp)
- linux安装sybase注意事项
- kafka
- Multisim的学习(一)
- VirtualBox 安装 ubuntu 桌面 全屏显示设置