poj3461 Oulipo,Kmp
来源:互联网 发布:mac下载阿里旺旺 编辑:程序博客网 时间:2024/06/06 08:47
计算串x在y中重复了多少次,可重叠。
/************************************************ * Author: yew1eb * Created Time: 2014/3/6 16:30:33 * File Name: poj3461.cpp *************************************************/#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <cmath>#include <stack>#include <queue>#include <ctime>#include <set>#include <map>using namespace std;#define INF 0x3f3f3f3f#define eps 1e-8#define pi acos(-1.0)typedef long long ll;const int maxn = 10000 + 10;int f[maxn];void getFail(char* P, int* f) { int i, j; int m = strlen(P); j = f[0] = -1; i = 0; while(i<m) { while(-1!=j && P[i] != P[j] ) j = f[j]; f[++i] = ++j; } } int count(char* x, char* y){ int n = strlen(y); int m = strlen(x); getFail(x, f); int j = 0; int ans = 0; for(int i=0; i < n; ++i) { while(j && y[i] != x[j]) j = f[j]; if(y[i] == x[j] ) j++; if(j >= m) { ans++; j = f[j]; } } return ans;}int main(){ int n; char x[maxn], y[1000000 + 10]; while(~scanf("%d",&n) ) { scanf("%s",x); scanf("%s",y); int ans = count(x, y); printf("%d\n",ans); } return 0;}
0 0
- 【KMP】 poj3461 Oulipo
- 【KMP】Oulipo POJ3461
- poj3461 Oulipo (kmp)
- [POJ3461] Oulipo[KMP基础]
- poj3461 Oulipo,Kmp
- POJ3461 Oulipo 【KMP】
- POJ3461 Oulipo KMP
- poj3461-Oulipo(KMP)
- poj3461 Oulipo【KMP】
- 【KMP】【POJ3461】Oulipo
- POJ3461 Oulipo(kmp)
- poj3461 Oulipo(KMP)
- 【poj3461】Oulipo(KMP)
- poj3461 Oulipo(KMP)
- POJ3461 Oulipo KMP基础
- poj3461 Oulipo(KMP)
- POJ3461 Oulipo KMP裸题
- 【POJ3461】Oulipo(KMP)
- 一次rac+dataguard 创建过程遇到密码文件问题
- visual studio快捷键大全
- 端口扫描器的实现
- Python 标准库 urllib2 的使用细节
- maven 常用命令
- poj3461 Oulipo,Kmp
- C++堆栈实现及拷贝构造函数的使用注意事项
- 反编译教程
- 一顺眸
- 关于jena OWL持久化 Table 'jena.jena_sys_stmt' doesn't exist的解决
- /dev/tty /dev/ttyS0 /dev/tty0区别
- ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较
- How to connect oracle databse
- 一直伴随着互联网的成熟