poj2752 Seek the Name, Seek the Fame
来源:互联网 发布:鬼畜调音软件 编辑:程序博客网 时间:2024/06/05 10:34
Description
The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek the fame. In order to escape from such boring job, the innovative little cat works out an easy but fantastic algorithm:
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:)
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
The input contains a number of test cases. Each test case occupies a single line that contains the string S described above.
Restrictions: Only lowercase letters may appear in the input. 1 <= Length of S <= 400000.
Restrictions: Only lowercase letters may appear in the input. 1 <= Length of S <= 400000.
Output
For each test case, output a single line with integer numbers in increasing order, denoting the possible length of the new baby's name.
Sample Input
ababcababababcababaaaaa
Sample Output
2 4 9 181 2 3 4 5
这题是一道很奇妙的题(笑),要深刻理解kmp算法中的next[]数组,题目要求s字符串中前缀与后缀相同的所有长度。next[i]数组的含义是前i个字符中前缀与后缀相同的字符总数。一开始s就是一个前后缀相同的字符串,然后计算next[len],得出符合条件的子串长度,然后再把这个子串长度当做要计算的字符串长度,继续计算出符合的子串长度next[i],理解后会发现挺简单的。
#include<stdio.h>#include<string.h>int len,next[400006],a[400006];char s[400006];void nextt(){int i,j,k,flag;i=0;j=-1;memset(next,-1,sizeof(next));while(i<len){if(j==-1 || s[i]==s[j]){i++;j++;next[i]=j;}else j=next[j];}}int main(){int n,m,i,j,t;while(scanf("%s",s)!=EOF){len=strlen(s);nextt();i=len;t=1;a[1]=len;while(next[i]!=0){a[++t]=next[i];i=next[i];}for(i=t;i>=1;i--){if(i==1)printf("%d\n",a[i]);else printf("%d ",a[i]);}}return 0;}
0 0
- POJ2752 Seek the Name, Seek the Fame
- POJ2752:Seek the Name, Seek the Fame
- poj2752 Seek the Name, Seek the Fame
- POJ2752 Seek the Name, Seek the Fame
- poj2752 seek the name seek the fame
- poj2752 Seek the Name, Seek the Fame
- POJ2752 Seek the Name, Seek the Fame
- poj2752-Seek the Name, Seek the Fame
- poj2752 Seek the Name,Seek the Fame
- POJ2752 Seek the Name, Seek the Fame
- poj2752 seek the name,seek the fame
- POJ2752 Seek the Name, Seek the Fame
- POJ2752 Seek the Name, Seek the Fame
- poj2752 Seek the Name, Seek the Fame
- POJ2752-Seek the Name, Seek the Fame
- [POJ2752] Seek the Name,Seek the Fame
- POJ2752 Seek the Name, Seek the Fame
- 【POJ2752】seek the name,seek the fame
- 欢迎使用CSDN-markdown编辑器
- 《Artech的ASP.NET系列》系列技术文章整理收藏
- PHP 数组遍历方法总结
- 黑马程序员——Java语法基础(二)
- hdu5269ZYB loves Xor I
- poj2752 Seek the Name, Seek the Fame
- 《Artech的WCF剖析系列》系列技术文章整理收藏
- Catch That Cow--poj3278
- 深入分析Java Web技术内幕_第一章 学习笔记
- Java编程思想_笔记(二)
- mongo与Java之aggregate
- 七、适配器模式
- LTE中的HARQ学习(1)——基本概念
- (八) Python函数