POJ 3461 kmp 应用
由于在处理每次成功的时候让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 应用相关推荐
- POJ 3461 KMP
题意: 给你两个字符串,问你串a在串b里面出现了多少次,可以重叠, 比如aaa aaaaa 是3 ,不是1. 思路: 就是在KMP的时候当匹配到比配串的最后一位的时候sum + ...
- KMP POJ 3461 Oulipo
题目传送门 1 /* 2 题意:问一个串在另一个串出现的次数(可重复) 3 KMP:模板题 4 */ 5 /********************************************** ...
- POJ 3461 字符串匹配(KMP / 哈希(有推导))
文章目录 1. 题目 1.1 题目链接 1.2 题目大意 2. Accepted代码 2.1 KMP解法 2.2 哈希法(有推导过程) 1. 题目 1.1 题目链接 http://poj.org/pr ...
- poj 3461 Oulipo (KMP)
http://poj.org/problem?id=3461 基础KMP, 要注意一次查找完成后,到下一可查找处继续匹配,这样才能保证得到最终个数. code: #include<cstdio& ...
- POJ - 3461 (kmp)
题目链接:http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissio ...
- poj 3461 Oulipo(kmp统计子串出现次数)
题意:统计子串出现在主串中的次数 思路:典型kmp #include<iostream> #include<stdio.h> #include<string.h> ...
- POJ 3461 Oulipo(kmp算法解析)
题目链接:https://cn.vjudge.net/contest/320014#problem/F Sample Input 3 BAPC BAPC AZA AZAZAZA VERDI AVERD ...
- Oulipo POJ - 3461【KMP】
这道题说了很多,但其实就是给了你两个字符串p和t,输出p在t中出现的次数 在KMP模板上的改动是 if(j==len1){ // printf("i=%d j=%d\n",i,j) ...
- POJ - Oulipo(KMP)
题目链接:http://poj.org/problem?id=3461 Time Limit: 1000MS Memory Limit: 65536K Description The French a ...
最新文章
- 关于软件测试学习心得
- 程序员都该知道这5个定律,有朋友使用后,现在已经是软件工程师!
- 车场系统服务器内存莫名急速下降,宝德工控机在停车场监控系统的解决方案
- Web服务生存周期内发生的事件/Soap扩展的阶段/Soap扩展的步骤
- 京东国际宣布国际超模刘雯担任品牌代言人
- 显示分类对应的文章数目,为空的设置为0,按文章数目排序
- jQuery使用(四):DOM操作之查找兄弟元素和父级元素
- 国际c语言乱码大赛PDF,国际C 语言乱码大赛(IOCCC)获奖作品
- windows10禁用UAC
- 阿里云服务器怎么配置安全组?
- Python环境与PyCharm编辑器的安装教程
- Python的简单代码:两天肝出画函数图像(散点图)的程序(不用matplotlib)(含白菜也能看懂的超超超详细讲解和源代码哦)
- Python concurrent.futures 的 map 函数解释
- 计算机网络协议层次结构图
- sleep的睡眠机制
- 分布式爬虫系统设计、实现与实战
- kungfu panda
- Win7系统64位下解决 {000209FF-0000-0000-C000-000000000046}
- Android 逆向初探
- AMT49105:高度集成的 ASIL BLDC MOSFET驱动器IC
热门文章
- 不需要定义神经网络结构就可以恢复模型的两方法
- springboot接收多对象_SpringBoot同时接收单个对象和List<object>参数
- R语言chorolayer_R语言空间可视化:绘制英国脱欧投票地图
- kfold_机器学习gridsearchcv(网格搜索)和kfold validation(k折验证)
- 不同表主键能相等吗_视频 |【搞机实验室】测血氧有啥,你见过能“开车”的表吗?...
- 计算机中级职称考试答题卡,内科学中级职称考试答题形式
- 2020年美团春招 技术综合试卷第一题
- Mac中word插入图片保持原来的清晰度
- java调用webservice几种方式
- SpringCloud(若依微服务版)读取Nacos中的配置以及多个服务共享Nacos配置的使用