Seek the Name, Seek the Fame---poj2752(kmp中的Next数组)
2015-09-24 15:41
337 查看
题目链接:http://poj.org/problem?id=2752
题意就是求出是已知s串的前缀的长度x,并且要求此前缀也是s串的后缀;求出所有的 x ;
Next【i】的含义是前i个元素的前缀和后缀的最大匹配;
所以本题就很简单了。。。
View Code
题意就是求出是已知s串的前缀的长度x,并且要求此前缀也是s串的后缀;求出所有的 x ;
Next【i】的含义是前i个元素的前缀和后缀的最大匹配;
所以本题就很简单了。。。
#include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; const int N = 4*1e5+7; char s ; int Next , n, a ; void GetNext() { int i=0, j=-1; Next[0] = -1; while(i<n) { if(j==-1 || s[i] == s[j]) Next[++i] = ++j; else j=Next[j]; } } int main() { int i; while(scanf("%s", s)!=EOF) { n = strlen (s); GetNext(); a[0] = n; i=1; while(Next[a[i-1]]!=0) { a[i] = Next[a[i-1]]; i++; } sort(a, a+i); for(int j=0; j<i; j++) printf("%d%c", a[j], i-1==j?'\n':' '); } return 0; }
View Code
相关文章推荐
- Java输入输出流
- Dialogfragment的使用
- Mac OS X 启用 Web 服务器
- 面试大全
- 在PCB中删除元件
- 文章标题
- 谷歌/微软/必应web页面免费翻译插件
- ViewDragHelper学习之九宫格拼图
- 苹果有毒!APP安全何在?
- 多次页面跳转后pop回主界面的问题
- Nim 中的参数传递
- MySQL必知必会笔记(一)基础知识和基本操作
- 触发器最终版 增删改最简单的一个
- IOS9 适配注意事项
- 【转】二进制文件的读写浮点数
- 蓝牙 - GameKit
- Java基础知识强化60:经典查找之二分查找
- 浅谈基于SQL Server分页存储过程五种方法及性能比较
- 工作年限
- getuid(),geteuid()