zoukankan      html  css  js  c++  java
  • Oulipo

    poj 3461

    题目大意:啥都不说了,就是一个模式匹配

    解决:KMP 刚开始一直wa,后来经同学提醒突然想到了溢出了,改了之后,一次就过了

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    char s[1000005],t[10005];
    int next[10005],tlen,slen;
    void getnext()
    {
        int i=1,j=0;
        next[1]=0;
        while(i<=tlen)
        {//本来的模式匹配  i < tlen 就结束了,但是为了让模式串结束的时候继续比较,将最需要再添加一个,i=len的时候匹配的地方
            if(j==0 || t[i]==t[j])
            {
                i++;j++;
                if(t[i]!=t[j])
                next[i]=j;
                else next[i]=next[j];
            }
            else j=next[j];
        }
    }
    int kmp()
    {
        int i=1,j=1,cnt=0;
        while(i<=slen)
        {
            if(j==0 || s[i]==t[j])
            {
                 i++;j++;
                //当模式 串匹配成功的时候,j仍然可以退回到next[j]的位置,继续与主串比较
                 if(j==tlen+1){ cnt++;  j=next[j]; } 
            }
            else j=next[j];
        }
        return cnt;
    }
    int main()
    {
        int icase;
        scanf("%d",&icase);
        while(icase--)
        {
            scanf("%s%s",t+1,s+1);
           //就因为这个地方把长度存放到s[0],t[0]导致一直wa,原来是由于字符太长导致溢出,放到int中一下就ac了
            tlen=strlen(t+1);
            slen=strlen(s+1);
            getnext();
            printf("%d\n",kmp());
        }
        system("pause");
        return 0;
    }
    

  • 相关阅读:
    C#调用Matlab程序
    一台电脑,内外网同时使用
    django 表反查
    django 反查
    登录注册
    django forms自带form表单
    django url 中name
    关于django无法加载静态css、js的情况
    django static
    django models,views,urls,settings
  • 原文地址:https://www.cnblogs.com/hpustudent/p/2155818.html
Copyright © 2011-2022 走看看