zoukankan      html  css  js  c++  java
  • KMP 剪花布条hdoj2087

    #include<stdio.h>
    #include <iostream>
    #include <vector>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    int Next[1005]={-1};
    char a[1005],b[1005];
    int m,n,cnt;
    void getNext()
    {   int t=-1;
        int j=0;
        while(j<m-1)
        {
            if(t<0||b[j]==b[t])
            {
                t++;j++;
                Next[j]=(Next[j]==Next[t]?Next[t]:t);
            }
            else
            {
                t=Next[t];
            }
        }
        return;
    }
    int KMP()
    {
        cnt=0;
        int i=0;
        int j=0;
    
            while(i <n &&j<m)
            {
                if(j<0 || a[i]==b[j])
                {
                    i++;j++;
                }
                else
                {
                    j=Next[j];
                }
                if(j==m)
                {
                    cnt++;
                    j=0;
                }
    
            }
    
    
    
        return cnt;
    
    }
    int main()
    {
        while(scanf("%s",a)!=EOF)
        {
            if(a[0]=='#' && strlen(a) ==1) break;
            else
            {
                scanf("%s",b);
                n=strlen(a);
                m=strlen(b);
                getNext();
                printf("%d
    ",KMP());
            }
        }
    
        return 0;
    }
  • 相关阅读:
    梯度消失和梯度爆炸
    BN的作用与使用过程
    百面机器学习笔记(二)
    正则表达式
    CSS Sprite
    事件绑定
    拖拽
    oncontextmenu
    鼠标跟随
    鼠标事件
  • 原文地址:https://www.cnblogs.com/vector11248/p/5468050.html
Copyright © 2011-2022 走看看