poj_3461: Oulipo
基础KMP题,本文提供一段能AC并且便于调试以及查看next数组的代码。
参考博客
http://blog.csdn.net/v_july_v/article/details/7041827
http://www.cnblogs.com/kuangbin/archive/2012/08/14/2638803.html
#include<iostream>
#include<cstring>
using namespace std;
;
int next[N];
char S[N],T[N]; //T为模式串,S为主串
int slen,tlen;
// 第一步先学习写好这个函数
int KMP_Index()
{
,j=;
while(i<slen&&j<tlen)
{
||S[i]==T[j])
i++,j++;
else
j=next[j];
}
if(j==tlen)
return i-tlen+1; //标号从0开始
else
;
}
// 第二步学习写好这个函数
int KMP_Count()
{
;
;
&&tlen==)
]==T[];
;i<slen;i++)
{
&&S[i]!=T[j])
j=next[j];
if(S[i]==T[j])
j++;
if(j==tlen)
{
ret++;
j=next[j];
}
}
return ret;
}
// 第三步,本着满足前两个函数的需求这一目标,来学习写好这个函数
// 而这一步,正是KMP算法精华所在
void getNext()
{
int j,k;
j=;k=-;next[]=-;
while(j<tlen)
||T[j]==T[k])
next[++j]=++k;
else
k=next[k];
}
void printNext()
{
;i<tlen;i++)
printf("%3c",T[i]);
puts("");
;i<tlen;i++)
printf("%3d",next[i]);
puts("");
}
int main()
{
// while(cin>>T)
// tlen=strlen(T),getNext(),printNext();
int tt;cin>>tt;
while(tt--)
{
cin>>T>>S;
slen=strlen(S);
tlen=strlen(T);
getNext();
printNext();
cout<<KMP_Count()<<endl;
// for(int i=0;i<tlen;i++)
// printf("%d",next[i]);
// puts("");
// cout<<"模式串T在主串S中首次出现的位置是: "<<KMP_Index()<<endl;
// cout<<"模式串T在主串S中出现的次数为: "<<KMP_Count()<<endl;
}
}
poj_3461: Oulipo的更多相关文章
- C++之路进阶——poj3461(Oulipo)
Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35694 Accepted: 14424 Descript ...
- poj3461 Oulipo(KMP模板)
Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17795 Accepted: 7160 Descripti ...
- Match:Oulipo(POJ 3461)
Oulipo 题目大意:给你一个字符串,要你找到字符串包含指定子串的个数 只要你知道了KMP,这一题简直不要太简单,注意STL的string是会超时的,还是乖乖用char吧 #include < ...
- KMP算法 hdu4686 Oulipo
Problem Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, w ...
- hdu----1686 Oulipo (ac自动机)
Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 字符串hash - POJ 3461 Oulipo
Oulipo Problem's Link ---------------------------------------------------------------------------- M ...
- POJ 3461 Oulipo
E - Oulipo Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- Oulipo (kmp)
Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26857 Accepted: 10709 Descript ...
- POJ 3461 Oulipo(乌力波)
POJ 3461 Oulipo(乌力波) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] The French autho ...
随机推荐
- Docker示例
运行一个Hello world zane@zane-V:~$ docker run ubuntu /bin/echo 'Hello world' Unable to find image 'ubu ...
- Android控件的使用
1. RadioButton (单选按钮) 嵌入到RadioGroup中实现单选效果 android:checkedButton="radio的id值" int getchecke ...
- js的函数返回值
今天从跟公司牛人那学到的~避免以后忘了赶快记录下来 平时JS的function的返回值可以是一个数值,也可以是一个对象({name:abc,age:123}),更可以是一个函数(这里我是第一次听说), ...
- javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)
javaCV图像处理系列: 一.javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 二.javaCV图像处理之2:实时视频添 ...
- (转)java web 学习之路(学习顺序)
第一步:学习HTML和CSS HTML(超文本标记语言)是网页的核心,学好HTML是成为Web开发人员的基本条件.HTML很容易学习的,但也很容易误用,要学精还得费点功夫. 随着HTML5的发展和普及 ...
- 同是办公软件,wps和office有什么区别?
今天完美小编为大家带来的是wps和office有什么区别教程,那么到底有什么区别呢?相信很多朋友都模棱两可,说不出所以然,看看下面的教程,相信你会选择更适合你的那一款软件.一起来看看吧! 1.两者特点 ...
- 依赖注入之Autofac使用总结
依赖倒置?控制反转(IOC)? 依赖注入(DI)? 你是否还在被这些名词所困扰,是否看了大量理论文章后还是一知半解了? 今天我想结合实际项目,和正在迷惑中的新手朋友一起来学习和总结依赖注入Autofa ...
- Nginx——在Windows环境下安装
下载 Nginx是开源软件,用户可以访问 http://nginx.org/ 网站获取源码包或Windows二进制文件下载.其中1.13.x版本为开发版本,1.12.0版本为稳定版本.开发版本分支会较 ...
- SQLServer类型与Java类型转换问题解决
ResultSet 接口提供用于从当前行获取列值的获取 方法(getBoolean.getLong 等).可以使用列的索引编号或列的名称获取值.一般情况下,使用列索引较为高效.列从 1 开始编号.为了 ...
- CSS动画属性性能详细介绍
CSS动画属性会触发整个页面的重排relayout.重绘repaint.重组recomposite Paint通常是其中最花费性能的,尽可能避免使用触发paint的CSS动画属性,这也是为什么我们推荐 ...