POJ 2752 Seek the Name, Seek the Fame(KMP next数组的应用)
2017-09-23 19:27
302 查看
http://poj.org/problem?id=2752
题目大意:
从小到大输出 串S中既是前缀又是后缀的子串的长度
分析:
题意就是next数组嘛 next数组从后往前 如果str[next[i]]==str[length-1] 记录一下长度就行
注意一点本身也是串S的前缀和后缀
AC代码:
题目大意:
从小到大输出 串S中既是前缀又是后缀的子串的长度
分析:
题意就是next数组嘛 next数组从后往前 如果str[next[i]]==str[length-1] 记录一下长度就行
注意一点本身也是串S的前缀和后缀
AC代码:
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> #include <vector> #include <stack> #include <queue> #include <map> #include <set> #include<list> #include <bitset> #include <climits> #include <algorithm> #define gcd(a,b) __gcd(a,b) #define mset(a,n) memset(a,n,sizeof(a)) #define FIN freopen("input.txt","r",stdin) #define FOUT freopen("output.txt","w",stdout) typedef long long LL; const LL mod=1e9+7; const int INF=0x3f3f3f3f; const double PI=acos(-1.0); using namespace std; int next[400010]; char str[400010]; int ans[400010]; void get_next(char *str){ int n=strlen(str); int j=-1; next[0]=-1; for (int i=1;i<n;i++){ while (j>=0&&str[i]!=str[j+1]) j=next[j]; if (str[i]==str[j+1]) j++; next[i]=j; } } int main (){ while(scanf ("%s",str)!=EOF){ get_next(str); int length=strlen(str); int i=next[length-1]; int len=0; while (i!=-1){ if(str[i]==str[length-1]) ans[len++]=i+1; i=next[i]; } for (int j=len-1;j>=0;j--) printf ("%d ",ans[j]); printf ("%d\n",length); } return 0; }
相关文章推荐
- POJ 2752 Seek the Name, Seek the Fame(KMP next数组应用)
- POJ - 2752 Seek the Name, Seek the Fame(KMP中对next数组的前缀后缀匹配应用)
- POJ 2752: S 4000 eek the Name, Seek the Fame(简单KMP-NEXT数组的应用)
- POJ-2752 Seek the Name, Seek the Fame(kmp中next数组的应用)
- poj2752_Seek the Name,Seek the Fame_KMP(next数组定义的应用)
- POJ 2752 Seek the Name, Seek the Fame(KMP,next数组的应用)
- POJ 2572(Seek the Name, Seek the Fame) KMP中next数组的应用
- POJ-2752-Seek the Name, Seek the Fame(KMPnext数组应用)
- Seek the Name, Seek the Fame(KMP之next数组应用)
- POJ2752 Seek the Name, Seek the Fame KMP-next数组的应用
- poj--2752Seek the Name, Seek the Fame KMPnext数组的应用
- poj2752Seek the Name, Seek the Fame【kmp next数组应用】
- POJ2752_Seek the Name, Seek the Fame_KMP_对next数组的运用
- POJ 2752 Seek the Name, Seek the Fame(KMP next数组运用)
- POJ 2752 Seek the Name, Seek the Fame(next数组的应用)
- POJ 2752 Seek the Name, Seek the Fame(KMP的next数组)
- poj2752Seek the Name, Seek the Fame(kmp简单变形,next数组)
- POJ 2752 Seek the Name, Seek the Fame (kmp next数组运用)
- POJ - 2752 Seek the Name, Seek the Fame(KMP next数组的理解)
- Seek the Name, Seek the Fame POJ - 2752 (KMP next数组 的 其他用法)