您的位置:首页 > 其它

杭电2087 剪花布条

2014-05-19 19:46 190 查看
跟1711一样的kmp入门题目#include<stdio.h>#include<string.h>char s[1111],t[1111];int next[1111],len1,len2;void getnext(){ int i=1,j=0; next[1]=0; while(i<len2) { if(j==0||t[i]==t[j]) { i++; j++; next[i]=j; } else j=next[j];}}int kmp(){ int sum=0,i=1,j=1; while(i<=len1&&j<=len2) { if(j==0||s[i]==t[j]) { i++; j++; } else j=next[j]; if(j>len2) { sum++; j=1; } } return sum;} int main(){ while(scanf("%s",s+1)) //注意这里要s+1,为了方便kmp的实现 { if(s[1]=='#') return 0; scanf("%s",t+1); len1=strlen(s+1); len2=strlen(t+1); getnext(); printf("%d\n",kmp()); }}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: