题目链接

基础KMP题,本文提供一段能AC并且便于调试以及查看next数组的代码。

参考博客

http://blog.csdn.net/v_july_v/article/details/7041827

http://www.cnblogs.com/kuangbin/archive/2012/08/14/2638803.html

#include<iostream>
#include<cstring>
using namespace std;

;
int next[N];
char S[N],T[N];        //T为模式串,S为主串
int slen,tlen;

//    第一步先学习写好这个函数
int KMP_Index()
{
    ,j=;
    while(i<slen&&j<tlen)
    {
        ||S[i]==T[j])
            i++,j++;
        else
            j=next[j];
    }
    if(j==tlen)
        return i-tlen+1;  //标号从0开始
    else
        ;
}
//    第二步学习写好这个函数
int KMP_Count()
{
    ;
    ;
    &&tlen==)
        ]==T[];
    ;i<slen;i++)
    {
        &&S[i]!=T[j])
            j=next[j];
        if(S[i]==T[j])
            j++;
        if(j==tlen)
        {
            ret++;
            j=next[j];
        }
    }
    return ret;
}
//    第三步,本着满足前两个函数的需求这一目标,来学习写好这个函数
//    而这一步,正是KMP算法精华所在
void getNext()
{
    int j,k;
    j=;k=-;next[]=-;
    while(j<tlen)
        ||T[j]==T[k])
            next[++j]=++k;
        else
            k=next[k];
}
void printNext()
{
    ;i<tlen;i++)
        printf("%3c",T[i]);
    puts("");
    ;i<tlen;i++)
        printf("%3d",next[i]);
    puts("");
}
int main()
{
//    while(cin>>T)
//        tlen=strlen(T),getNext(),printNext();
    int tt;cin>>tt;
    while(tt--)
    {
        cin>>T>>S;
        slen=strlen(S);
        tlen=strlen(T);
        getNext();
        printNext();
        cout<<KMP_Count()<<endl;
//        for(int i=0;i<tlen;i++)
//            printf("%d",next[i]);
//        puts("");
//        cout<<"模式串T在主串S中首次出现的位置是: "<<KMP_Index()<<endl;
//        cout<<"模式串T在主串S中出现的次数为: "<<KMP_Count()<<endl;
    }
}

poj_3461: Oulipo的更多相关文章

  1. C++之路进阶——poj3461(Oulipo)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35694   Accepted: 14424 Descript ...

  2. poj3461 Oulipo(KMP模板)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17795   Accepted: 7160 Descripti ...

  3. Match:Oulipo(POJ 3461)

     Oulipo 题目大意:给你一个字符串,要你找到字符串包含指定子串的个数 只要你知道了KMP,这一题简直不要太简单,注意STL的string是会超时的,还是乖乖用char吧 #include < ...

  4. KMP算法 hdu4686 Oulipo

    Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...

  5. hdu----1686 Oulipo (ac自动机)

    Oulipo Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  6. 字符串hash - POJ 3461 Oulipo

    Oulipo Problem's Link ---------------------------------------------------------------------------- M ...

  7. POJ 3461 Oulipo

      E - Oulipo Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit ...

  8. Oulipo (kmp)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26857   Accepted: 10709 Descript ...

  9. POJ 3461 Oulipo(乌力波)

    POJ 3461 Oulipo(乌力波) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] The French autho ...

随机推荐

  1. python中的map、filter、reduce函数

    三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str.   1.map函数 map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function ...

  2. elasticsearch系列(五)score

    概述 score在ES中有着很重要的作用,有了它才有了rank,是验证文档相关性的关键数据,score越大代表匹配到的文档相关性越大 官方解释 查询的时候可以用explain来展示score的计算过程 ...

  3. eclipse 创建maven 项目 动态web工程报错

    Eclipse 创建maven 项目 动态web工程 注:Eclipse版本为(Version: Mars.1 Release (4.5.1))maven版本为(apache-maven-3.3.9) ...

  4. cpp(第十三章)

    1.动态(晚期)联编需要显示定义复制构造函数,赋值运算符,虚构函数. 2.纯虚类不能声明对象. 3.赋值运算符的特征标随类而异. 4.返回类型协变,重新定义继承的方法,应确保与原来的原型完全相同,但如 ...

  5. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

  6. [转]html转码表

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  7. Linux centOS的vm虚拟机配置详细 中文版

    这里以安装cenOS6.6 为例 如果想要需要cenos 6.6 ios文件的朋友看我的另一篇关于cenos6.6版本的下载详细 文中内容是摘抄自老男孩老师的<linux 跟老男孩学Linux运 ...

  8. IOS机型margin属性无效问题

    这个问题很多小伙伴都有遇到,这次本猿也遇到了,记录一笔. 结论:简单的解决办法margin换padding!如有误,请大神不吝赐教.在Chrome浏览器移动端测试iphone5,打开的也是没问题的(这 ...

  9. 【Python3之面向对象进阶】

    一.isinstance和issubclass 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj=Foo() p ...

  10. Linux文件锁定保护命令chattr介绍

    chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files- 最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTt ...