您的位置:首页 > 其它

KMP 模板

2016-02-01 00:12 260 查看
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

char a[10005],b[1000005];
int nexta[10005];

void getnext(){
int len=strlen(a);
nexta[0]=-1;
int k=-1;
int j=0;

while(j<len)
{
if(k==-1||a[j]==a[k]){
++j;
++k;
if(a[j]!=a[k])
nexta[j]=k;
else
nexta[j]=nexta[k];
}
else
k=nexta[k];
}
}

int kmp()
{
int len_a=strlen(a);
int len_b=strlen(b);
int count=0;
int j=0;
int i=0;

while(j<len_b){
if(i==-1||a[i]==b[j]){
i++;
j++;
}
else
i=nexta[i];
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: