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 ...
随机推荐
- Java中设计模式之单例设计模式-1
单例作用 1 节省内存 2 可以避免多种状态导致状态冲突 单例的创建步骤 1 私有化构造方法 2 私有化声明的属性 3 getInstance 4 方法需要静态 单例分类 1.懒汉式 2.饿汉式 两种 ...
- 关于JS跨域问题的解决
这里不提供什么高深的代码了,只说明一个解决跨域问题的方法,个人觉得这个方法是最方便也是最有效的. 那就是一用不同源的JS,虽然JS不允许不同源的访问,但是可以引用不同源的JS,用这样的方法我们可以引用 ...
- [Leetcode] Binary search, DP--300. Longest Increasing Subsequence
Given an unsorted array of integers, find the length of longest increasing subsequence. For example, ...
- Python3实现简单的http server
前端的开发的html给我们的时候,由于内部有一些ajax请求的.json的数据,需要在一个web server中查看,每次放到http服务器太麻烦.还是直接用python造一个最方便. 最简单的,直接 ...
- wap网站的优化建设
我们在成功建立wap网站之后,不要觉得一时没有达到自己想要的效果就丢之气之,让其成为垃圾链接,我们既然前期做了大量的工作来建立起来这个网站,一定要坚持耐心的把这个网站培养下去,其实就如同我们栽种一个树 ...
- JSON字符串和JS对象
JSON和JS对象 一 JSON是什么 JSON是基于文本的,轻量的,用于数据交换的,一种格式. 可以看到JSON的定义里面有很多的定语,现在就每个限定解释一下: 1. 基于文本 这里的意思是相对于哪 ...
- 配置lnmp
===================准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state –state NEW ...
- mysqldump 用法总结
mysqldump 备份 备份数据库 my_database $ mysqldump -uUSER -pPASSWD my_database > my_database.sql 备份数据库 my ...
- CoolBlog开发笔记第4课:数据库模型设计
教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 1.3 CoolBlog开发笔记第3课:创建Django应用 前言 我新书<Py ...
- 实现自己的.NET Core配置Provider之EF
<10分钟就能学会.NET Core配置>里详细介绍了.NET Core配置的用法,另外我还开源了自定义的配置Provider:EF配置Provider和Yaml配置Provider.本文 ...