HDU 2087 kmp模板题
Posted 天翎月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2087 kmp模板题相关的知识,希望对你有一定的参考价值。
s为主串 t为模板串 求t的nextt 加const
#include<stdio.h> #include<string.h> #include<algorithm> #include<map> #include<math.h> #include<queue> using namespace std; char s[1005]; char t[1005]; int nextt[1005]; void makenext(const char t[]) { int i=0,j=-1; int len=strlen(t); nextt[0]=-1; while(i<len) { if(j==-1||t[i]==t[j]) { i++; j++;
nextt[i]=j; } else j=nextt[j]; } } int ans; void kmp(const char s[],const char t[]) { makenext(t); int len1=strlen(s); int len2=strlen(t); int i=0,j=0; while(i<len1) { if(j==-1||s[i]==t[j]) { i++; j++; } else j=nextt[j]; if(j==len2) { ans++; j=0; } } } int main(){ while(~scanf("%s",s)) { if(strcmp(s,"#")==0) break; scanf("%s",t); ans=0; kmp(s,t); printf("%d\n",ans); } }
以上是关于HDU 2087 kmp模板题的主要内容,如果未能解决你的问题,请参考以下文章