HDU 2087 剪花布条
2016-09-01 18:42
363 查看
剪花布条
题目连接:点击打开链接题意:第二个串在第一个串出现的次数(不能重叠)
思路 :kmp,当匹配到的时候,往后跳第二个串的长度
#include<iostream> #include<cstring> #include<cstdio> using namespace std; char t[2000],p[2000]; int sum; void makenext(char p[],int next[]) { int m,i,k; m=strlen(p); next[0]=0; for(i=1,k=0;i<m;i++) { while(k>0&&p[i]!=p[k]) { k=next[k-1]; } if(p[i]==p[k]) { k++; } next[i]=k; } } void kmp(char t[],char p[],int next[]) { int i,n,m,k; n=strlen(t); m=strlen(p); makenext(p,next); for(i=0,k=0;i<n;++i) { while(k>0&&p[k]!=t[i]) { k=next[k-1]; } if(p[k]==t[i]) { k++; } if(k==m) { sum++; i=i+m-1; } } cout<<sum<<endl; } int main() { int next[10010]={0}; memset(t,0,sizeof t); memset(p,0,sizeof p); while(~scanf("%s",&t)) { if(t[0]==35) break; scanf("%s",&p); sum=0; kmp(t,p,next); } }
相关文章推荐
- HDU 2087 剪花布条 kmp
- HDU 2087 剪花布条
- HDU 2087 剪花布条
- C - 剪花布条 HDU - 2087
- HDU-2087 剪花布条
- 剪花布条 hdu 2087 KMP算法的简单运用
- hdu 2087 剪花布条
- HDU 2087 剪花布条 裸KMP
- hdu 2087 剪花布条 kmp小水
- HDU-2087 剪花布条
- hdu 2087 剪花布条
- hdu 2087 剪花布条 --(KMP,匹配串在主串中不可以重叠)
- HDU 2087剪花布条 (kmp)
- HDU - 2087 剪花布条
- HDU 2087 剪花布条(哈希写法)
- 剪花布条 (HDU_2087) KMP
- (KMP 1.3)hdu 2087 剪花布条(求文本串中有几个模式串)
- hdu 2087 剪花布条 kmp
- hdu 2087 剪花布条 KMP
- HDU 2087 剪花布条