KMP(模板)
简单理解 首先kmp有两部分组成 第一部分 next数组 什么是next数组 通俗的讲就是 子串自己对自己的前后缀匹配 举个栗子 子串:ABABCABAA 对应的next 第二部分就是kmp了 其实跟第一部分很像,只不过是把对象换成了母串 即子串对母串的前缀匹配 落谷有一kmp模板题 点这里 # 下面是蒟蒻的代码以及巨佬的代码 //鄙人的代码,只能过70%的样例,剩下的超时了很尴尬 # include <iostream> # include <stdio.h> # include <string.h> using namespace std ; char a [ 2222222 ] , b [ 2222222 ] ; int p [ 2222222 ] ; void next ( int lenb ) { p [ 0 ] = 0 ; //第一个为0 int i = 1 , len = 0 ; //i是位置,len是长度 while ( i < lenb ) //自我匹配 { if ( b [ i ] == b [ len ] ) { len ++ ; p [ i ++ ] = len ; } else { if ( len > 0 ) //防止出现死循环 len = p [ len ] ; //跳回去 else p [ i ++ ] = len ; } } } void move