码迷,mamicode.com
首页 > 其他好文 > 详细

POJ2752--Seek the Name, Seek the Fame

时间:2019-07-05 00:31:48      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:math   iostream   串匹配   oid   class   highlight   queue   cstring   字符   

题目在这儿。

 

 

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
char s[400001];
int len,next[400001],sum[400001];
void get_next(int len){
    int i=0,j=-1;
    next[0]=-1;
    while(i<len){
        if((j==-1)||(s[i]==s[j])){
            i++;
            j++;
            next[i]=j;
        }
        else{
            j=next[j];
        }
    }
}
int main(){
    while(scanf("%s",s)!=EOF){
        int k=0;
        len=strlen(s);
        get_next(len);
        for(int i=len;i!=0;){
            sum[k++]=next[i];
            i=next[i];
        }
        for(int i=k-2;i>=0;i--){
            printf("%d ",sum[i]);
        }
        printf("%d\n",len);
    }
    return 0;
}

  

通过KMP算法来处理字符串匹配的问题。

最好用优化版的代码,适用面广--佚名。

 

POJ2752--Seek the Name, Seek the Fame

标签:math   iostream   串匹配   oid   class   highlight   queue   cstring   字符   

原文地址:https://www.cnblogs.com/xiongchongwen/p/11135499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!