传送门:http://poj.org/problem?id=3461

题目大意:给你两个字符串p和s,求出p在s中出现的次数。

题解:这一眼看过去就知道是KMP,作为模板来写是最好不过了。。。。

这道题我写了两种风格的kmp,个人感觉第2种好理解一些;

 #include <iostream>
#include <cstring>
#include <cstdio>
#define inf
char s[],p[];
int next[];
int lens,lenp,n;
using namespace std;
void getnext()
{
int j=-,i=;
next[]=-;
while (i!=lenp)
{
if (j==- || s[i]==s[j])
next[++i]=++j;
else
j=next[j];
}
}
int KMP()
{
int i=,j=,count=;
while (i!=lens && j!=lenp)
{
if (s[i]==p[j]||j==-)
++i,++j;
else
j=next[j];
if (j==lenp)
{
count++;
j=next[j];
}
}
return count;
}
int main()
{
int z;
scanf("%d",&z);
for (int zz=; zz<=z; zz++)
{
scanf("%s%s",p,s);
lens=strlen(s);
lenp=strlen(p);
//memset(next,0,sizeof(next));
getnext();
int ans=KMP();
printf("%d\n",ans);
}
}

第一种

 #include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 1000100
int n,fix,ans,i,lens,lent;
char s[maxn],t[maxn];
int next[maxn];
void getnext()
{
fix=;
for (fix,i=; i<=lent; i++)
{
while(fix && t[fix+]!=t[i]) fix=next[fix];
if (t[fix+]==t[i]) fix++;
next[i]=fix;
}
}
int KMP()
{
int count;
fix=; count=;
for (int i=; i<=lens; i++)
{
while (fix && t[fix+]!=s[i]) fix=next[fix];
if (t[fix+]==s[i]) fix++;
if (fix==lent)
{
count++;
fix=next[fix];
}
}
return count;
}
int main()
{
int z;
scanf("%d",&z);
for (int zz=; zz<=z; zz++)
{
scanf("%s",t+);
scanf("%s",s+);
lens=strlen(s+); lent=strlen(t+);
memset(next,,sizeof(next));
getnext();
ans=KMP();
printf("%d\n",ans);
}
}

第二种

poj 3641 ——2016——3——15的更多相关文章

  1. POJ 3641 Pseudoprime numbers (数论+快速幂)

    题目链接:POJ 3641 Description Fermat's theorem states that for any prime number p and for any integer a ...

  2. 2016.8.15上午纪中初中部NOIP普及组比赛

    2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...

  3. 2016.9.15初中部上午NOIP普及组比赛总结

    2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...

  4. POJ 3641 快速幂+素数

    http://poj.org/problem?id=3641 练手用,结果念题不清,以为是奇偶数WA了一发 #include<iostream> #include<cstdio> ...

  5. poj 3641 Pseudoprime numbers

    题目连接 http://poj.org/problem?id=3641 Pseudoprime numbers Description Fermat's theorem states that for ...

  6. macbook pro 2016 2017 15寸 雷电3 外接显卡 epu 简单教程(不修改UEFI)

    雷电3外接显卡效果还不错,但是除了akitio node 其他厂家并不会维护自己的固件来适配新机型,我自己买的mbp 2016 15''就出现了和AORUS Gaming Box 1070不兼容的问题 ...

  7. POJ 1068 AC 2014-01-07 15:24 146人阅读 评论(0) 收藏

    POJ的题目都是英文的,所以,,,还是直接贴代码吧 #include<stdio.h> int main(){ int x,y,z; int n,nm,max; scanf("% ...

  8. poj 3641 Pseudoprime numbers Miller_Rabin测素裸题

    题目链接 题意:题目定义了Carmichael Numbers 即 a^p % p = a.并且p不是素数.之后输入p,a问p是否为Carmichael Numbers? 坑点:先是各种RE,因为po ...

  9. [位运算] [搜索] [递推优化] [计算几何] TEST 2016.7.15

    NOIP2014 提高组模拟试题 第一试试题 题目概况: 中文题目名称 合理种植 排队 科技节 源程序文件名 plant.pas/.c/.cpp lineup.pas/.c/.cpp scifest. ...

随机推荐

  1. java反射简解

    1.首先一个问题,什么是类,类是不是对象? 我们总是说我们new一个对象出来 那么我们还没有new的时候,建造的那个java类是不是对象呢? 是 它是java.lang.Class的对象 对于反射我们 ...

  2. hdu_5418_Victor and World(状压DP+Floyd)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 题意:给你n个点,和一些边,找一条路径经过全部的点,并回到起点,问最小的花费是多少, 题解:m& ...

  3. Entity Framework 学习中级篇1—EF支持复杂类型的实现

    本节,将介绍如何手动构造复杂类型(ComplexType)以及复杂类型的简单操作. 通常,复杂类型是指那些由几个简单的类型组合而成的类型.比如:一张Customer表,其中有FristName和Las ...

  4. HDU1425 <sort 快排>

    给你n个整数,请按从大到小的顺序输出其中前m大的数. 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,5000 ...

  5. Mac 生产力探究

    转载自:http://devtian.me/2015/04/15/about-my-productivity-tool-in-MacOSX/ ##密码管理器 1Password 1Password 是 ...

  6. margin问题

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 转:web_url函数学习

    web_url语法:        Int Web_url(const char *name, const char * url, <Lists of Attributes>, [EXTR ...

  8. line-box(转)

    inline-block是什么? Inline-block是元素display属性的一个值.这个名字的由来是因为,display设置这个值的元素,兼具行内元素( inline elements)跟块级 ...

  9. A标签中通过href和onclick传递的this对象

    在blog的后台管理中允许为一个分类添加一个地址,但是不好添加onclick事件.想传递当前对象给一个函数,于是就将这个URL写成"Javascript:shoControlSidebar( ...

  10. Gson通过借助TypeToken获取泛型参数的类型的方法

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...