http://poj.org/problem?id=3461

基础KMP, 要注意一次查找完成后,到下一可查找处继续匹配,这样才能保证得到最终个数。

code:

#include<cstdio>
#include<cstring>
char substr[10001] ;
char str[1000001] ;
int next[10001] ;
int sublen, len, ans ;
void get_next(){
    next[1] = 0 ;
    int j = 0 ;
    for(int i=2; i<=sublen; i++){
        while(j>0&&substr[j+1]!=substr[i])
            j = next[j] ;
        if(substr[j+1]==substr[i])  j ++ ;
        next[i] = j ;
    }
}
void kmp(){
    int j = 0 ;
    for(int i=1; i<=len; i++){
        while(j>0&&substr[j+1]!=str[i])
            j = next[j] ;
        if(substr[j+1]==str[i]) j ++ ;
        if(j==sublen){
            ans ++ ;
            j = next[j] ;   //一次查找完成后,到下一可查找处继续匹配
        }
    }
    printf("%d\n", ans) ;
}
int main(){
    int t ;
    scanf("%d", &t) ;
    while(t--){
        scanf("%s", substr+1) ;
        scanf("%s", str+1) ;
        ans = 0 ;
        sublen = strlen(substr+1) ;
        len = strlen(str+1) ;
        get_next() ;
        kmp() ;
    }
    return 0 ;

}

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/02/05/2339128.html

poj 3461 Oulipo (KMP)相关推荐

  1. KMP POJ 3461 Oulipo

    题目传送门 1 /* 2 题意:问一个串在另一个串出现的次数(可重复) 3 KMP:模板题 4 */ 5 /********************************************** ...

  2. POJ - 3461 (kmp)

    题目链接:http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

  3. poj 3461 Oulipo(kmp统计子串出现次数)

    题意:统计子串出现在主串中的次数 思路:典型kmp #include<iostream> #include<stdio.h> #include<string.h> ...

  4. POJ 3461 Oulipo(kmp算法解析)

    题目链接:https://cn.vjudge.net/contest/320014#problem/F Sample Input 3 BAPC BAPC AZA AZAZAZA VERDI AVERD ...

  5. Oulipo POJ - 3461【KMP】

    这道题说了很多,但其实就是给了你两个字符串p和t,输出p在t中出现的次数 在KMP模板上的改动是 if(j==len1){ // printf("i=%d j=%d\n",i,j) ...

  6. poj 3461 - Oulipo

    KMP算法,按书上说的写一遍,总是很别扭,后来才知道是数组开始问题,就是从"1"还是从"0"开始,废了很多脑力,又增几多白发,才把书上的从1开始改为从0开始.昨 ...

  7. POJ 3461 Oulipo

    KMP模板题 #include<iostream> #include<cstring> #include<cstdio> using namespace std; ...

  8. POJ 3461 字符串匹配(KMP / 哈希(有推导))

    文章目录 1. 题目 1.1 题目链接 1.2 题目大意 2. Accepted代码 2.1 KMP解法 2.2 哈希法(有推导过程) 1. 题目 1.1 题目链接 http://poj.org/pr ...

  9. Oulipo (KMP算法)

    Oulipo (KMP算法) 题目链接:HDU-1686 题目: Oulipo Problem Description The French author Georges Perec (1936–19 ...

最新文章

  1. 学习抖音上如何一下删除大型文件,源代码给出!
  2. ros重置后地址_从零开始丨INDEMIND双目惯性模组ROS平台下实时ORB-SLAM记录教程
  3. DHL 快递跟踪查询
  4. MariaDB Spider 数据库分库分表实践 分库分表
  5. 使用Redis的简单消息队列
  6. Java快速入门学习笔记2 | Java语言中的基本类型
  7. 2008不可错过的好莱坞电影
  8. html中灰色怎么写,css如何实现置灰不可点
  9. 本机web开发环境的搭建--nginx篇
  10. 设置广告 php,设置ecshop广告位
  11. 单应性变换(Homography)的学习与理解
  12. 怎样保存html视频,网页上的视频怎么保存到电脑 网页视频保存到电脑的步骤教程...
  13. sklearn.metrics confusion_matrix注意事项
  14. Android中wifi认证的实现
  15. 懒人起名神器,百度翻译内容改为驼峰格式
  16. 蓝桥杯评分标准_蓝桥杯软件设计大赛自测评分标准
  17. C语言编程>第二十六周 ⑥ 请补充fun函数,该函数的功能是:按 “0”到 “9”统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。
  18. scrapy 简单教程
  19. nodejs安装及环境配置
  20. PowerShell隐藏不显示窗口的多种方法

热门文章

  1. mysql控制台操作
  2. [HDOJ1897]继续畅通工程
  3. EasyInvoice 简介
  4. 一种真正意义上的Session劫持
  5. 【疑问感受】初见指针——当函数遇到指针
  6. Redis集成到Maven工程(Jedis客户端)
  7. 快速排序思路(Hoare版),代码实现
  8. Mysql排序添加名词_记面试中问到的MySQL的SQL调优问题
  9. JavaScript和Java的区别
  10. MyBatis源码之:MapperMethod