首页 > 代码库 > POJ 3461 Oulipo (KMP)
POJ 3461 Oulipo (KMP)
传送门
题目大意
有n次询问,问W串在T串中出现的次数
题解
KMP
代码
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,lenw,lent,nxt[10009]; char w[10009],t[1000009]; void getnext(){ for(int i=2,j=0;i<=lenw;i++){ while(w[i]!=w[j+1]&&j)j=nxt[j]; if(w[i]==w[j+1])nxt[i]=++j; } } int kmp(){ int js=0; for(int i=1,j=0;i<=lent;i++){ while(t[i]!=w[j+1]&&j)j=nxt[j]; if(t[i]==w[j+1])j++; if(j==lenw){js++;j=nxt[lenw];} } return js; } int main(){ scanf("%d",&n); while(n--){ scanf("%s\n%s",w+1,t+1); lenw=strlen(w+1);lent=strlen(t+1); getnext(); printf("%d\n",kmp()); } return 0; }
POJ 3461 Oulipo (KMP)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。