题意:求匹配串在文本中出现次数,KMP应用,理解了就OK了,每次匹配成功就累加次数,开始的时候超时,
由于在处理每次成功的时候让i=i-len2+1,相当于回溯了,后来一想,本次成功,相当于“失败”,i不动,

j需要用哪里来匹配?当然是next{j}!嘛(此处j=len2)。第一次真正敲kmp,完全根据自己理解敲出来的总控。

#include<iostream>   //用string 220ms,char *,scanf 110ms
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
int next[40000];
void get_next(char * s) //next[len]也求得了(有意义)。
{int i=0,j=-1;next[0]=-1;int len=strlen(s);while(i<len){if(j==-1||s[i]==s[j]){i++;j++;if(s[i]==s[j])   //此处只为文本的匹配,可以加快!next[i]=next[j];elsenext[i]=j;}else{j=next[j];}}
}
int count=0;
void kmp(char * tx,char * w)
{int i=-1,j=-1;               //为了下面++int len2=strlen(w);int len1=strlen(tx);while(i<len1){if(j==-1||tx[i]==w[j]){i++;j++;}else{j=next[j];}if(j==len2)     //一次匹配成功,{count++;j=next[j];  //j对应位置。}}
}
char tx[1000008];char w[10010];
int main()
{int ta;cin>>ta;while(ta--){count=0;scanf("%s\n",w);scanf("%s",tx);get_next(w);kmp(tx,w);printf("%d\n",count);}return 0;
}

转载于:https://www.cnblogs.com/yezekun/p/3925722.html

POJ 3461 kmp 应用相关推荐

  1. POJ 3461 KMP

    题意:       给你两个字符串,问你串a在串b里面出现了多少次,可以重叠, 比如aaa aaaaa 是3 ,不是1. 思路:       就是在KMP的时候当匹配到比配串的最后一位的时候sum + ...

  2. KMP POJ 3461 Oulipo

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

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

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

  4. poj 3461 Oulipo (KMP)

    http://poj.org/problem?id=3461 基础KMP, 要注意一次查找完成后,到下一可查找处继续匹配,这样才能保证得到最终个数. code: #include<cstdio& ...

  5. POJ - 3461 (kmp)

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

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

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

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

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

  8. Oulipo POJ - 3461【KMP】

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

  9. POJ - Oulipo(KMP)

    题目链接:http://poj.org/problem?id=3461 Time Limit: 1000MS Memory Limit: 65536K Description The French a ...

最新文章

  1. 关于软件测试学习心得
  2. 程序员都该知道这5个定律,有朋友使用后,现在已经是软件工程师!
  3. 车场系统服务器内存莫名急速下降,宝德工控机在停车场监控系统的解决方案
  4. Web服务生存周期内发生的事件/Soap扩展的阶段/Soap扩展的步骤
  5. 京东国际宣布国际超模刘雯担任品牌代言人
  6. 显示分类对应的文章数目,为空的设置为0,按文章数目排序
  7. jQuery使用(四):DOM操作之查找兄弟元素和父级元素
  8. 国际c语言乱码大赛PDF,国际C 语言乱码大赛(IOCCC)获奖作品
  9. windows10禁用UAC
  10. 阿里云服务器怎么配置安全组?
  11. Python环境与PyCharm编辑器的安装教程
  12. Python的简单代码:两天肝出画函数图像(散点图)的程序(不用matplotlib)(含白菜也能看懂的超超超详细讲解和源代码哦)
  13. Python concurrent.futures 的 map 函数解释
  14. 计算机网络协议层次结构图
  15. sleep的睡眠机制
  16. 分布式爬虫系统设计、实现与实战
  17. kungfu panda
  18. Win7系统64位下解决 {000209FF-0000-0000-C000-000000000046}
  19. Android 逆向初探
  20. AMT49105:高度集成的 ASIL BLDC MOSFET驱动器IC

热门文章

  1. 不需要定义神经网络结构就可以恢复模型的两方法
  2. springboot接收多对象_SpringBoot同时接收单个对象和List<object>参数
  3. R语言chorolayer_R语言空间可视化:绘制英国脱欧投票地图
  4. kfold_机器学习gridsearchcv(网格搜索)和kfold validation(k折验证)
  5. 不同表主键能相等吗_视频 |【搞机实验室】测血氧有啥,你见过能“开车”的表吗?...
  6. 计算机中级职称考试答题卡,内科学中级职称考试答题形式
  7. 2020年美团春招 技术综合试卷第一题
  8. Mac中word插入图片保持原来的清晰度
  9. java调用webservice几种方式
  10. SpringCloud(若依微服务版)读取Nacos中的配置以及多个服务共享Nacos配置的使用