1. HDU 1711 Number Sequence

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 10007 int a[],b[N],next[N];
int n,m; void getnext()
{
next[] = -;
int i = ,j = -;
while(i<m)
{
if(j == - || b[i] == b[j])
{
++i,++j;
if(b[i] != b[j])
next[i] = j;
else
next[i] = next[j];
}
else
j = next[j];
}
} int kmp()
{
int i = -,j = -;
while(i<n && j<m)
{
if(j == - || a[i] == b[j])
i++,j++;
else
j = next[j];
}
if(j == m)
return i-j+;
return ;
} int main()
{
int t,i,res;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
scanf("%d",&a[i]);
for(i=;i<m;i++)
scanf("%d",&b[i]);
if(n<m)
{
printf("-1\n");
continue;
}
getnext();
res = kmp();
if(res)
printf("%d\n",res);
else
printf("-1\n");
}
return ;
}

代码2:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 10007 int a[],b[N],next[N];
int n,m; void getnext()
{
next[] = -;
int i = ,j = -;
while(i<m-)
{
if(j == - || b[i] == b[j])
next[++i] = ++j;
else
j = next[j];
}
} int kmp()
{
int i = -,j = -;
while(i<n && j<m)
{
if(j == - || a[i] == b[j])
i++,j++;
else
j = next[j];
}
if(j == m)
return i-j+;
return ;
} int main()
{
int t,i,res;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=;i<n;i++)
scanf("%d",&a[i]);
for(i=;i<m;i++)
scanf("%d",&b[i]);
if(n<m)
{
printf("-1\n");
continue;
}
getnext();
res = kmp();
if(res)
printf("%d\n",res);
else
printf("-1\n");
}
return ;
}

2.POJ 3461 Oulipo

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 10007 char a[],b[N];
int next[N];
int n,m,cnt; void getnext()
{
next[] = -;
int i = ,j = -;
while(i<m)
{
if(j == - || b[i] == b[j])
next[++i] = ++j;
else
j = next[j];
}
} void kmp()
{
int i = -,j = -;
while(i<n && j<m)
{
if(j == - || a[i] == b[j])
i++,j++;
else
j = next[j];
if(j == m)
{
cnt++;
j = next[j];
}
}
} int main()
{
int t,i;
scanf("%d",&t);
while(t--)
{
scanf("%s",b);
scanf("%s",a);
n = strlen(a);
m = strlen(b);
getnext();
cnt = ;
kmp();
printf("%d\n",cnt);
}
return ;
}

基础KMP两道的更多相关文章

  1. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  2. 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar && Malek and Summer Semester

    这几天一直在宿舍跑PY模型,学校的ACM寒假集训我也没去成,来学校的时候已经18号了,突然加进去也就上一天然后排位赛了,没学什么就去打怕是要被虐成渣,今天开学前一天,看到最后有一场大的排位赛,就上去试 ...

  3. 两道面试题,带你解析Java类加载机制

    文章首发于[博客园-陈树义],点击跳转到原文<两道面试题,带你解析Java类加载机制> 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Gr ...

  4. 【转】两道面试题,带你解析Java类加载机制(类初始化方法 和 对象初始化方法)

    本文转自 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html 关键语句 我们只知道有一个构造方法,但实际上Ja ...

  5. ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)

    两道有关欧拉回路的例题 POJ1300-Door Man //判定是否存在从某点到0点的欧拉回路 //Time:0Ms Memory:116K #include<iostream> #in ...

  6. ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)

    两道以Floyd算法为解法的范例,第二题如果数据量较大,须采用其他解法 POJ2570-Fiber Network //经典的传递闭包问题,由于只有26个公司可以采用二进制存储 //Time:141M ...

  7. ACM/ICPC 之 SPFA范例两道(POJ3268-POJ3259)

    两道以SPFA算法求解的最短路问题,比较水,第二题需要掌握如何判断负权值回路. POJ3268-Silver Cow Party //计算正逆最短路径之和的最大值 //Time:32Ms Memory ...

  8. ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)

    两道较为典型的单源最短路径问题,采用dijkstra解法 本来是四道练习题,后来发现后面两道用dijkstra来解的话总觉得有点冗余了,因此暂且分成三篇博客(本篇以及后两篇). ZOJ1053(POJ ...

  9. 两道二分coming~

    第一道:poj 1905Expanding Rods 题意:两道墙(距离L)之间架一根棒子,棒子受热会变长,弯曲,长度变化满足公式( s=(1+n*C)*L),求的是弯曲的高度h. 首先来看这个图: ...

随机推荐

  1. gcd和拓展gcd算法

    gcd算法是用来求两个数最大公约数的算法,他是依靠辗转相除(中国好像叫辗转相减)法来求两个数的最大公约数,别的地方也有很多介绍不做过多赘述,主要提供代码供自己参考. gcd(int a,int b) ...

  2. [Tool] 使用Astah绘制UML图形

    [Tool] 使用Astah绘制UML图形 前言 在软件开发的过程中,开发人员可以绘制UML图形来将分析设计内容转化为图形化文件,方便在团队之间传递分析设计结果.但在团队经费有限的情景中,可能没办法为 ...

  3. JS创建对象、继承原型、ES6中class继承

    面向对象编程:java中对象的两个基本概念:1.类:类是对象的模板,比如说Leader 这个是泛称领导,并不特指谁.2:实例:实例是根据类创建的对象,根据类Leader可以创建出很多实例:liyi,y ...

  4. Javascript的封装

    js的封装分为以下几种模式: 工厂模式,代码如下: <!doctype html><html lang="en"><head><meta ...

  5. Oracle LPAD/RPAD函数在处理中文时的注意事项

    首先看下Oracle官方对函数的定义: The RPAD function returns an expression, right-padded to a specified length with ...

  6. DDMS无法查看data/data目录?

    今天andorid 学习用真机来尝试用Android SQLite数据库时,从DDMS的FileExplore查看数据库文件时会发现里面是空的什么也没有,之前用的一直都是模拟器,现如今用真机 捣鼓了小 ...

  7. 复杂对象的本地化(以Person为例)

    Person.h #import <Foundation/Foundation.h> @interface Person : NSObject <NSCoding> /// 姓 ...

  8. .NET下dropdownlist的基本操作

    //List列中索引的赋值 teacher.DataValueField = ds.Tables[0].Columns["pidcord"].ColumnName; //List列 ...

  9. Git使用之设置SSH Key

    设置SSH Key 1.    检查是否已经有SSH Key. $cd ~/.ssh 如果说没有这个目录,就直接看第三步 2.    备份 3.    生成一个新的SSH. $ssh-keygen - ...

  10. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

    当Adobe.Microsoft.Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协 ...