<pre name="code" class="cpp">#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
char s[1000],pattern[100];
int pre_suf[105];
void kmp()
{
int len=strlen(pattern);
pre_suf[0]=-1;
pre_suf[1]=0;
int cnt=0;
for(int i=2;i<=len;i++)
{
while(cnt>0&&pattern[cnt]!=pattern[i-1])
{
cnt=pre_suf[cnt];
}
if(pattern[cnt]==pattern[i-1]) cnt++;
pre_suf[i]=cnt;
}
return;
}
int cmp()
{
int len=strlen(s),len2=strlen(pattern);
int cnt=0,ans=0;
for(int i=0;i<=len-1;i++)
{
while(cnt>0&&pattern[cnt]!=s[i]) cnt=pre_suf[cnt];
if(pattern[cnt]==s[i]) cnt++;
ans=max(ans,cnt);
if(cnt==len2) break;
}
return ans;
}
int main()
{
return 0;
}
模板整理之KMP
最新推荐文章于 2022-05-24 16:17:18 发布