POJ 3461 Oulipo(KMP模板)
来源:互联网 发布:治痘痘最好的方法知乎 编辑:程序博客网 时间:2024/05/18 20:12
题目链接:POJ 3461
题意:字符串匹配。
题解:KMP。有一篇讲解KMP的博客非常详细:从头到尾彻底理解KMP(2014年8月22日版)
我保存了一份PDF
代码:
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>using namespace std;const int MAX=10000+10;int next[MAX];void buildNext(string P){int m=P.size();next[0]=-1;int i=0,j=-1;while(i<m){if(j<0||P[i]==P[j]){i++;j++;next[i]=P[i]!=P[j]?j:next[j];//next数组优化}else {j=next[j];}}}int KMP(string T,string P){int cnt=0;buildNext(P);int n=T.size(),i=0;//原串int m=P.size(),j=0;//模式串while(i<n&&j<m){if(j<0||T[i]==P[j]){i++;j++;}else {j=next[j];}if(j==m){//如需记录每个匹配成功的位置,可以用一个数组来记录cnt++;//数量加1j=next[j];//继续进行多次匹配}}//若只求一次匹配的位置// if(j==m)// return i-j;//返回匹配成功的起始位置// else // return -1;return cnt;}int main(){int T;scanf("%d",&T);getchar();while(T--){string T;string P;getline(cin,P);getline(cin,T);cout<<KMP(T,P)<<endl;}}
0 0
- POJ 3461 Oulipo(KMP模板)
- KMP模板题 poj 3461 Oulipo
- poj 3461 Oulipo(kmp 模板题)
- POJ 3461 Oulipo(KMP模板)
- 【哈希&KMP模板题】-POJ-3461-Oulipo
- POJ 3461 Oulipo (kmp模板)
- poj 3461 Oulipo(KMP模板题)
- POJ 3461 Oulipo (KMP模板题)
- POJ - 3461 Oulipo(KMP模板题)
- poj 3461 Oulipo (KMP 模板题)
- POJ 3461 Oulipo(KMP模板)
- POJ 3461 Oulipo [KMP模板题]
- POJ 3461 Oulipo KMP模板题
- POJ 3461 Oulipo(KMP模板题)
- POJ:3461-Oulipo(KMP模板题)
- POJ Oulipo(KMP模板题)
- poj 3461 Oulipo(KMP)
- POJ 3461 Oulipo(KMP)
- 连续子数组最大和问题
- 面试准备之--二叉树的递归与非递归方式
- Android仿天天果园Splash
- Html.DropDownList()的用法
- 高并发数据结构Disruptor解析(5)
- POJ 3461 Oulipo(KMP模板)
- 赛码网_在线编程_军训队列
- 写点什么好呢2? 钱、事业、婚姻、人生意义
- bzoj1433(网络流)
- v2ex上的最近火起来的基于QT5的截图工具Snipaste
- 笔试面试中关于排序算法看这里就够了
- $与document.getElementById区别
- viewpager在最后一页滑动之后,跳转到主页面
- MySQL-----命令行下插入中文报错