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 ...
随机推荐
- 第二天0605下午——超链接<a>与图片<img>
今天下午学习了超链接<a>标签和图片<img>标签,以下面代码为例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- css如何让div和页面等高?
我们都知道,只要是block状态的标签,宽度和父级等宽,或者设置宽度100%也可以等宽,但设置高度100%是不管用的,那么如何让标签和页面等高呢,除了用js去动态计算设置高度值,用css也可以 只要将 ...
- 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态 ...
- webuploader插件,我踩得坑
我在目前的公司做的项目要么是原生写法去做项目,要么就是vue+webpack做项目,但是vue这部分只是用了模板template,vue其他的都没用. 有一个项目需要做上传图片的功能,老大扔给我一个插 ...
- colinux
Colinux是什么?2004年,由一名21岁的以色列学生与几名日本的自由程序员合作开发出了一个名为“Cooperative Linux”即“CoLinux”的Linux程序,该程 序可使Linux的 ...
- rsync的用法
一.用法例子 1.增量备份本地文件#rsync -av ebook/ tmp/ //注意:文件名中最好不要有 :#rsync -avzrtopgL --progress /src /dst 2.本地和 ...
- [转] .NET领域驱动设计—初尝(疑问、模式、原则、工具、过程、框架、实践)
阅读目录: 1.1.疑问 1.1.1.UML何用 1.1.2.领域建模 1.2.模式 1.3.原则 1.5.过程 1.6.框架 1.7.项目演示 最近在研究DDD颇有收获,所以整理出来跟大家分享,共同 ...
- css透明度的设置
Css代码 .transparent_class { filter:alpha(opacity=50); -moz-opacity:0.5; -khtml-opacity: 0.5; opacity: ...
- 学习php语法--数据库扩展(总结篇)
前 言 php php中的数据库扩展mysql语法--本篇学习都是通过使用数字天堂的HBuider开发环境,连接mysql数据.介绍php连接mysql数据库的代码与函数. 本篇学习主要有两 ...
- Install Composer on CentOS
First you have to go to the /tmp directory cd /tmp Download the composer.phar file curl -sS https:// ...