KMP算法 KMP模式匹配 二(串)

来源:互联网 发布:淘宝订单怎么查发票 编辑:程序博客网 时间:2024/05/16 04:56

B -KMP模式匹配 二(串)
Crawling in process...Crawling failedTime Limit:1000MS    Memory Limit:131072KB     64bit IO Format:%lld & %llu

Description

输入一个主串和一个子串,用KMP进行匹配,问进行几趟匹配才成功,若没成功,则输出0

Input

输入一个主串和一个子串

Output

匹配的趟数

Sample Input

ababcabcacbababcac

Sample Output

3

今早晨看了一遍才算真正看懂了代码。next数组的求值。。


#include<iostream>#include<string>#include<cstring>using namespace std;int next[10005];char str[10005];int len;void getnext(char *str,int next[]){    int j,k;next[1]=0;j=1;k=0;while(j<=len)if((k==0)||(str[j]==str[k])){++j;++k;next[j]=k;}elsek=next[k];}int main(){char s[1005];cin>>s;len =strlen(s);int j,k;for(j=1,k=0;k<len;j++,k++){str[j]=s[k];}int i;getnext(str,next);for(i=1;i<len;i++)        cout<<next[i]<<" ";cout<<next[len]<<endl;return 0;}







0 0