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

【KMP模板】简单写个KMP~

时间:2017-05-02 19:51:52      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:return   span   algorithm   clu   char   logs   can   ext   pac   

本来easy的KMP

却一直过不了洛谷的模板题。。。

仔细一看原来在输出next数组时打的回车而不是空格。。。

身败名裂。。。

话说有个sunday貌似一般状况下比KMP快呢。。。去看看2333

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

char a[1000010],b[10010];
int nextt[10010];

int main()
{
    scanf("%s%s",a+1,b+1);
    int la=strlen(a+1);
    int lb=strlen(b+1);
    int j=0;
    for(int i=2;i<=lb;i++)
    {
        while(b[j+1]!=b[i]&&j) j=nextt[j];
        j+=(b[j+1]==b[i]);
        nextt[i]=j;
    }
    
    j=0;
    for(int i=1;i<=la;i++){
        while(j&&a[i]!=b[j+1]) j=nextt[j];
        j+=(a[i]==b[j+1]);
        if(j==lb) printf("%d\n",i-lb+1);    
    }
    for(int i=1;i<=lb;++i)
        printf("%d ",nextt[i]);
    return 0;
}

 

【KMP模板】简单写个KMP~

标签:return   span   algorithm   clu   char   logs   can   ext   pac   

原文地址:http://www.cnblogs.com/rir1715/p/6797554.html

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