题目链接

基础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. gulp - less 在node.js上的安装和使用

    推荐个一个网站 http://www.ydcss.com/ 很详细的入门gulp 官网 http://www.gulpjs.com.cn/docs/getting-started/ 下面 是我的个人总 ...

  2. linux系统必学-部分链接

    vi操作笔记 vim操作笔记 好网站,临时收藏  SEO十万个为什么 9RIA.com天地会--中国最大的专业Flash论坛 ===互联网=============================== ...

  3. ios移动端原生滚动条滚动不灵敏问题

    最近开发微信页面的时候遇到了这个问题, 因为移动端浏览器的原生滚动条样式很好,不像pc端那么难看,所以在页面需要滚动的地方用了原生的滚动条,这种滚动条在安卓浏览器中没有任何问题,但是在ios微信浏览器 ...

  4. 测序分析软件-trimmomatic的记录

    1.下载相关软件,网址:http://www.usadellab.org/cms/index.php?page=trimmomatic,它有源代码和二进制两种文件(建议都下载,然后合并成一个文件,因为 ...

  5. Tomcat7配置管理员帐号密码及权限

    在使用tomcat时,若要使用管理监控功能,需要用用户名密码登录使用,而tomcat7默认是将用户是注释的,所以需要配置后使用, 配置文件为根目录下的/conf/tomcat-users.xml文件. ...

  6. C#与Java对比学习

    Eclipse开发环境与VS开发环境的调试对比 数据类型.集合类.栈与队列.迭达.可变参数.枚举 类型判断.类与接口继承.代码规范与编码习惯.常量定义

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一

    前言 我从Quartz2.0开始使用,并对其进行了封装了界面,可以参考 http://www.cnblogs.com/ymnets/p/5065154.html 最近拿出来进行了优化,并升级到最新版, ...

  8. 总结·CSS3中定位模型之position属性的使用方法

    一.position元素介绍 position属性规定了元素的定位类型,通过定位,可准确地定义元素相对于其正常位置而应该出现的位置,或者是相对于父元素.另一元素和浏览器窗口等的位置. position ...

  9. Ubuntu下安装并配置VS Code编译C++

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7069091.html Ubuntu下安装并配置VS Code编译C++ 安装 ...

  10. root权限下找不到 /root/.ssh目录

    Xshell配置ssh登陆远程服务器,找不到 root/.ssh目录,报错信息如下: root@ubuntu:/home/xinxin# cd /root/.ssh/bash: cd: /root/. ...