【POJ 2752 KMP之next】

原创 2013年12月04日 10:32:28

题目链接:http://poj.org/problem?id=2752

#include<iostream>
#include<cstdio>
using namespace std;
char s[400005];
int next[400005],a[400005];
void getnext(char *p,int *next){
	int len=strlen(p);
	next[0]=-1;
	int i=0,k=-1;
	while(i<len){
		if(k==-1 || p[i]==p[k]){
			i++;
			k++;
			next[i]=k;
		}
		else
			k=next[k];
	}
}
int main(){
	while(scanf("%s",s)!=EOF){
		getnext(s,next);
		int len=strlen(s),i,k=0;
		i=len;
		a[0]=len;
		while(next[i]>0){
			
			i=next[i];
			a[++k]=i;
		}
		for(int j=k;j>=0;--j){
			printf("%d",a[j]);
			if(j)
				printf(" ");
		}
		printf("\n");
	}
}

这道题目要求既是前缀字符串又是后缀字符串的所有可能的长度,正好运用了KMP算法里面next数组的意义,要保证结果是针对整个字符串的,所以在next数组中从后往前扫描即可,因为,next数组中,越往后,数字就越大,并且表示的是后缀和前缀相同的最大长度,所以所得到的结果顺序是反的,要求从小到大输出,逆序输出就可以了。

相关文章推荐

POJ 2752 KMP算法中next数组的应用

这道题是昨天晚上9点多看的,今天早上来了后想了想,,感觉有思路了,吃过饭后就ac了,,,没注意到数据大小,,吃了一次re。。。。。。。这道题算是next数组的一个应用,,,有点折半查找的感觉,,,求字...
  • wmn_wmn
  • wmn_wmn
  • 2011年11月10日 08:25
  • 996

POJ 2752: Seek the Name, Seek the Fame(简单KMP-NEXT数组的应用)

题意大概就是给你一个很长的字符串,然后让你找所有满足”前缀=后缀”的长度.很显然,使用KMP里的求解NEXT数组的思想.最长的是串的长度,假设为len这里将next数组做一个变形,让next[i] =...

POJ-2752 Seek the Name, Seek the Fame(kmp中next数组的应用)

H - Seek the Name, Seek the Fame Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%ll...

KMP(4)--poj2752(next数组的应用)

Seek the Name, Seek the Fame Time Limit:2000MS    Memory Limit:65536KB    64bit IO Format:%lld & %...

poj2752Seek the Name, Seek the Fame(kmp简单变形,next数组)

Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1059...

POJ 2752 Seek the Name, Seek the Fame (kmp next数组运用)

题目链接:点击打开链接 Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K ...

POJ2752_Seek the Name, Seek the Fame_KMP_对next数组的运用

题意: 给一个串s,求他所有的前缀和后缀相等的时候的子串长度,按从小到大输出 题解: 刚开始我也知道是next数组的运用,但是想了半天也没发现有什么练习,想模拟一遍找规律,但是失败了,无奈上网搜解题报...

poj2752 Seek the Name, Seek the Fame(next数组的运用)

poj2752 Seek the Name, Seek the Fame(next数组的运用)

poj 2752 next数组应用

Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submiss...

KMP入门题 Hdu 1711 2594 3746 HUST 1010 Poj 3461 2752 2406 1961 FZU 1901

三道KMP算法的基础题,有关理论可以参考 KMP及其next数组性质学习小记 Poj1961 + Poj2406 - whyorwhnt的专栏 HUST 1010 The Minimum Len...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【POJ 2752 KMP之next】
举报原因:
原因补充:

(最多只允许输入30个字)