POJ 2752
来源:互联网 发布:linux经典书籍推荐 编辑:程序博客网 时间:2024/06/05 02:05
Description
Step1. Connect the father's name and the mother's name, to a new string S.
Step2. Find a proper prefix-suffix string of S (which is not only the prefix, but also the suffix of S).
Example: Father='ala', Mother='la', we have S = 'ala'+'la' = 'alala'. Potential prefix-suffix strings of S are {'a', 'ala', 'alala'}. Given the string S, could you help the little cat to write a program to calculate the length of possible prefix-suffix strings of S? (He might thank you by giving your baby a name:)
Input
Restrictions: Only lowercase letters may appear in the input. 1 <= Length of S <= 400000.
Output
Sample Input
ababcababababcababaaaaa
Sample Output
2 4 9 181 2 3 4 5
这题要深入理解next的含义是前缀后缀的长度最大值,不断递归找NEXT等于缩小前缀后缀相同长度的直播
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int N = 400010;char str1[N];int len1;int res[N], nex[N];void getnext();int main(){ while(scanf("%s",str1)!=EOF) { len1=strlen(str1); getnext(); memset(res,0,sizeof(res)); int x=0; for(int i=len1;i!=0;i=nex[i]) { res[x++]=i; } for(int i=x-1;i>=0;i--) { printf("%d%c",res[i],i==0?'\n':' '); } } return 0;}void getnext(){ int k=-1, j=0; nex[0]=-1; while(j<len1) { if(k==-1||str1[j]==str1[k]) { k++,j++; nex[j]=k; } else { k=nex[k]; } } return ;}
- POJ 2752
- poj 2752
- poj 2752
- POJ 2752
- poj 2752
- POJ 2752
- poj(2752)
- POJ 2752
- poj 2752
- POJ 2752
- poj 2752
- POJ-2752
- POJ 2752
- POJ-2752
- poj 2752
- Poj 2752
- poj 2752
- POJ 2752
- 雅虎网站性能优化-34条黄金守则
- VB6 Advanced Filter Function
- Android5.0+(NavigationView)
- 纯虚函数与纯虚类
- android note
- POJ 2752
- mysql远程登录及修改用户密码
- Pytyhon 爬虫-爬取阿里旅行特价机票信息(2)
- C#读取系统安装的字体的方法
- 关于Bootstrap(二)
- nodejs-express4.X框架路由中获取参数值方法
- JQuery各种点击事件的区别
- 神经网络读书笔记:《神经网络与机器学习/Simon Haykin》导言概念总结
- python 学习(十四)之元组