hdu 2087 kmp
2015-05-26 16:23
211 查看
求不重叠的模式串有多少个。
#include<stdio.h> #include<string> #include<string.h> #include<algorithm> #include<iostream> using namespace std; #define maxn 1000006 int f[10005]; char s1[maxn],s2[maxn]; int cnt; void net(int n) { // int n=strlen(s2); int j=0; f[0]=0; f[1]=0; // cout<<"fuck"<<endl; for(int i=2;i<n;i++) { j=f[i-1]; while(j&&s2[i-1]!=s2[j]) j=f[j]; // cout<<"fuck"<<endl; if(s2[i-1]==s2[j]) f[i]=j+1; else f[i]=0; } } int kmp(int n,int m) { int n1=n; int n2=m; int j=0; int i=0; for(i=0;i<n1;i++) { while(j&&s1[i]!=s2[j]) j=f[j]; if(s1[i]==s2[j]) j++; if(j==n2) { j=0; cnt++; } } return cnt; } int main() { while(scanf("%s",s1)!=EOF) { cnt=0; if(s1[0]=='#'&&s1[1]=='\0') break; scanf("%s",s2); int n=strlen(s1); int m=strlen(s2); net(m); cout<<kmp(n,m)<<endl; } return 0; }
相关文章推荐
- hdu 2087剪花布条 (KMP入门 子串出现的次数和子串个数)
- HDU 2087 KMP
- 【HDU 2087】剪花布条(kmp)
- 【hdu 2087】剪花布条(kmp)
- HDU 2087___kmp 字符串匹配
- HDU 2087:剪花布条(KMP入门)
- HDU 2087 剪花布条(KMP)
- HDU 2087 剪花布条(KMP 模板题)
- hdu 2087 剪花布条(KMP)
- hdu 2087 剪花布条(KMP)
- HDU 2087 水KMP
- hdu 2087 剪花布条(不重叠匹配 kmp)
- HDU - 1711 - Number Sequence,1686 - Oulipo,2087 - 剪花布条,3746 - Cyclic Nacklace (KMP基础)
- hdu 2087 剪花布条【KMP】
- HDU-2087(KMP)
- HDU 2087 剪花布条 KMP极其初级之入门题(KMP模板在这里)
- HDU - 2087 剪花布条——kmp
- HDU 2087 剪花布条 KMP
- HDU 2087 剪花布条(KMP)
- 剪花布条 (HDU_2087) KMP