hdu1686 Oulipo【kmp】
来源:互联网 发布:新编诸子集成知乎 编辑:程序博客网 时间:2024/06/04 19:49
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686
题意:给你字符串W和T,让你求W在T中出现了多少次,可重叠的计算(见样例)
解析:每次匹配完的时候cnt++,然后让j=nex[j]
#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int maxn = 1000000+100;char a[maxn],b[maxn];int nex[maxn];void getNex(char a[]){ int len = strlen(a); memset(nex,-1,sizeof(-1)); int k = -1,i = 0; while(i<len) { if(k==-1 || a[k]==a[i]) { k++,i++; nex[i] = k; } else k = nex[k]; }}int kmp_cnt(char a[],char b[]){ int len1 = strlen(a),len2 = strlen(b); int i=0,j=0; int cnt = 0; getNex(b); while(i<len1 && j<len2) { if(a[i]==b[j]) { i++; j++; if(j==len2) { cnt++; j =nex[j]; } } else if(j==0) i++; else j = nex[j]; } return cnt;}int main(void){ int t; cin>>t; while(t--) { scanf("%s %s",b,a); int ans = kmp_cnt(a,b); printf("%d\n",ans); } return 0;}
0 0
- hdu1686 Oulipo(KMP)
- hdu1686 oulipo 【KMP】
- HDU1686 Oulipo(扩展KMP)
- hdu1686 Oulipo (KMP)
- hdu1686 Oulipo--KMP
- hdu1686 Oulipo kmp
- hdu1686 Oulipo【kmp】
- HDU1686:Oulipo KMP算法
- HDU1686 POJ3461 Oulipo KMP算法
- HDU1686 Oulipo(扩展KMP)
- hdu1686 Oulipo
- hdu1686 Oulipo
- Oulipo hdu1686
- HDU1686:Oulipo
- hdu1686 Oulipo
- hdu1686--Oulipo
- hdu1686 Oulipo
- hdu1686 Oulipo
- 387. First Unique Character in a String
- Android中的线程和线程池
- JQuery的筛选基础了解
- Opencv学习_3 (Opencv读取视频 &视频进度控制 &写视频)
- how to fix the frame size?
- hdu1686 Oulipo【kmp】
- jdbc连接数据库使用sid和service_name的区别
- 05.JUC 集合
- linux ethtool命令
- perl 多线程及信号控制
- JSP
- 加载中动画
- opencv学习_4(opencv基础数据结构 CvPoint & CvSize & CvRect & CvScalar & CvArr & CvMat)
- Comparable接口实现数组排序