题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711

题目意思:给出一条有n个数的序列a[1],a[2],......,a[n],和一条有m 个数的序列b[1],b[2],......,b[m],求出b[1],b[2],...,b[m]在序列a中完全匹配时,在序列a中的位置,如果找不到输出-1.

这几天一直在学kmp,该题算是kmp的入门题吧。有个地方要稍稍注意,代码中,主串和模式串的比较初始值为-1,-1,否则如果从0开始,会默认第一个字符是相等的!!!

 #include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std; const int N = 1e6 + ;
const int M = 1e4 + ;
int next[M], n, m;
int a[N], b[M]; void get_next(int *next)
{
int i = ;
int j = -;
next[] = -;
while (i < m)
{
if (j == - || b[i] == b[j])
{
i++;
j++;
next[i] = j;
}
else
j = next[j];
}
} int main()
{
int T, i, j;
while (scanf("%d", &T) != EOF)
{
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]);
get_next(next);
i = -, j = -;
int ans = -;
while (i <= n && j <= m)
{
if (j == - || a[i] == b[j]) // 关键!
{
++i;
++j;
}
else
j = next[j];
if (j == m)
{
ans = i - m + ;
break;
}
}
printf("%d\n", ans);
}
}
return ;
}

hdu 1711 Number Sequence 解题报告的更多相关文章

  1. HDU 1711 Number Sequence(数列)

    HDU 1711 Number Sequence(数列) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  2. HDU 1711 Number Sequence (字符串匹配,KMP算法)

    HDU 1711 Number Sequence (字符串匹配,KMP算法) Description Given two sequences of numbers : a1, a2, ...... , ...

  3. HDU 1711 Number Sequence 【KMP应用 求成功匹配子串的最小下标】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/O ...

  4. HDU 1711 Number Sequence(KMP)附带KMP的详解

    题目代号:HDU 1711 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/ ...

  5. HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. HDU 1711 Number Sequence (KMP简单题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. hdu 1711 Number Sequence KMP 基础题

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. KMP - HDU 1711 Number Sequence

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. HDU 1711 Number Sequence(字符串匹配)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. c字符和字符数组/字符串

    一维和二维的都可以:一维的情况如下:1,char string0[10];2,char string1[]="prison break";3,char string2[100]=& ...

  2. Java全局变量不加修饰符时的访问权限范围

    如上图所示.

  3. react 起手式

    http://blog.csdn.net/zhouzhiande/article/details/52349344 http://blog.csdn.net/zhouzhiande/article/d ...

  4. 使用git 高效多人合作

    复习一下... 附加学习链接: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/) ...

  5. .NET CORE TOKEN 权限验证

    原文:.NET CORE TOKEN 权限验证 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012601647/article/details/ ...

  6. jmeter - DBC Request之Query Type

    工作中遇到这样一个问题: 需要准备10W条测试数据,利用jmeter中的JDBC Request向数据库中批量插入这些数据(只要主键不重复就可以,利用函数助手中的Random将主键的ID末尾五位数随机 ...

  7. 怎样提高hbase的入库性能

    hbase写数据首先先写入memstore.当memstore满64MB以后,会flush到disk上而成为storefile.当storefile数量超过3时,会启动compaction过程将它们合 ...

  8. Solidworks工程图如何使用,替换图纸格式模板文件

    1 如果你有了图纸模板(SLDDRW文件),比如下面的这个文件,则以后把零件的三维图拖放到里面就可以了.注意,这是最简单,最有效的方法,后面另存为的slddrt文件不好使,所以还不如把模板文件另存为S ...

  9. 浏览器g.xxx333xxx.com 跳转2345问题解决方法

    近期升级windows10系统我,我顺手在浏览器输入"windows10"激活keyword,下载了小马激活工具进行了激活.例如以下图. 下载安装后.浏览器每次打开强制跳转到234 ...

  10. free命令具体解释——Linux性能分析

    一.使用格式 语法格式:free [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V] [-b | -k | -m] :选择数据的单位-b字节.-k千字节.-m ...