码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2087 剪花布条

时间:2016-04-30 22:05:04      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

  KMP基础

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char s[1010],p[1010];
int sum,next[1010];
void getNext(char *p,int *next)  
{
    int j,k;
    next[0]=-1;
    j=0,k=-1;
    while(j<strlen(p)-1)
    {
        if(k==-1||p[j]==p[k])
        {
            j++;
            k++;
            next[j]=k;
        }
        else
            k=next[k];
    }
}
int KMP(char *s,char *p)
{
    int i,j;
    i=0,j=0,sum=0;
    getNext(p,next);
    while(i<strlen(s))
    {
        if(j==-1||s[i]==p[j])
        {
            i++;
            j++;
        }
        else
            j=next[j];     
        if(j==strlen(p))        
            sum++;
        if(i==strlen(s))
            return sum;      
    }
}

int main()
{
    while(scanf("%s",s)&&strcmp(s,"#")!=0)
    {
        scanf("%s",p);
        printf("%d\n",KMP(s,p));
    }

 

HDU 2087 剪花布条

标签:

原文地址:http://www.cnblogs.com/jifahu/p/5449319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!