Description

有n个小朋友,每个小朋友手里有一些糖块,现在这些小朋友排成一排,编号是由1到n。现在给出m个数,能不能唯一的确定一对值l和r(l <= r),使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数?
Input

首先输入一个整数n,代表有n个小朋友。下一行输入n个数,分别代表每个小朋友手里糖的数量。

之后再输入一个整数m,代表下面有m个数。下一行输入这m个数。
Output

如果能唯一的确定一对l,r的值,那么输出这两个值,否则输出-1
Sample
Input

5

1 2 3 4 5

3

2 3 4

Output

2 4

#include<bits/stdc++.h>using namespace std;
#define maxn 1000010int s[maxn], t[maxn];
int Next[maxn];
int n, m;void get_next()
{int i = 0, j = -1;Next[0] = -1;while(i < m){if(j == -1 || t[i] == t[j]){i++;j++;Next[i] = j;}elsej = Next[j];}
}
int kmp(int beg)
{int i = beg, j = 0;while(i < n && j < m){if(j == -1 || s[i] == t[j]){i++;j++;}elsej = Next[j];}if(j == m)return i - j + 1;elsereturn -1;
}int main()
{scanf("%d", &n);for(int i = 0; i < n; i++)scanf("%d", &s[i]);scanf("%d", &m);for(int i = 0; i < m; i++)scanf("%d", &t[i]);get_next();int x = kmp(0);//对s串进行第一次遍历,判断是否能找到符合条件的if(x == -1)//如果第一次没找到,那么程序结束printf("-1\n");else//第一次找到了,接下来要从X位置往后找,看是否能找到{if(kmp(x) == -1)//在x之后没找到,说明存在唯一printf("%d %d\n", x, x + m - 1);else//说明不唯一printf("-1\n");}return 0;
}

数据结构实验之串三:KMP应用相关推荐

  1. a - 数据结构实验之串一:kmp简单应用_【在线教学示范课案例】数据结构(刘航)...

    一.教师简介 刘航,网络空间安全学院教师,本科生"数据结构"."算法设计综合实验" 和研究生"算法设计与优化"课程的主讲教师.近年来积极开展 ...

  2. a - 数据结构实验之串一:kmp简单应用_串的两种模式匹配方式(BF/KMP算法)

    串的两种模式匹配方式(BF/KMP算法) 前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最 ...

  3. a - 数据结构实验之串一:kmp简单应用_中高级面试必备:快速入门数据结构和算法

    一 前言 1 为什么要学习算法和数据结构? 解决特定问题. 深度优化程序性能的基础. 学习一种思想:如何把现实问题转化为计算机语言表示. 2 业务开发要掌握到程度? 了解常见数据结构和算法,沟通没有障 ...

  4. a - 数据结构实验之串一:kmp简单应用_数据结构(C语言版)_笔记_3

    第4章 串 计算机上的非数值处理的对象基本上是字符串数据. 字符串一般简称为串. 4.1 串类型的定义 串(string)(或字符串)是由零个或多个字符组成的有限序列,一般记为其中s是串的名,单引号括 ...

  5. a - 数据结构实验之串一:kmp简单应用_Java程序员必会之数据结构与算法全梳理

    常见的数据结构 链表 LinkedHashSet LinkedList 底层数据结构由链表和哈希表组成. 数据的添加和删除都较为方便,就是访问比较耗费时间. 数组 ArrayList 访问数据十分简单 ...

  6. SDUT_2118 数据结构实验之链表三:链表的逆置

    点击打开链接 数据结构实验之链表三:链表的逆置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem De ...

  7. SDUT 3347 数据结构实验之数组三:快速转置

    数据结构实验之数组三:快速转置 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 转置运算是一种最简单的矩阵运算,对于一个 ...

  8. SDUT 3400 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 150MS Memory Limit: 65536KB Submit Statistic Problem Description ...

  9. 数据结构实验之排序三:bucket sort SDUT

    数据结构实验之排序三:bucket sort SDUT Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Problem Desc ...

最新文章

  1. FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean
  2. 上天探索脉冲星,下海保护白海豚,腾讯这个AI团队,今年真的有点忙
  3. 前端一HTML:十一:其他选择器
  4. Struts2中将表单数据封装到List和Map集合中
  5. tensorflow中关于vgg16的项目
  6. python3openpyxl,python3和openpyxl,在写入fi时格式化日期列表
  7. 用localStorage来存储数据的一些经验
  8. 关于compaq visual fortran6.6 安装问题的解决方法
  9. 2021年研究生数学建模竞赛优秀论文汇总
  10. 频响测试软件的使用教程,频谱分析仪的使用方法与技巧
  11. 51中断编程c语言,有关51单片机中断的形式和C语言编程格式[精选5篇]
  12. 判断一个数是不是奇数
  13. 【python 新浪微博爬虫】python 爬取新浪微博热门话题
  14. Android系统架构和应用程序基本概念详解
  15. 产品生命周期和项目生命周期
  16. 利用Matlab实现Mann-Kendall(MK)突变检验函数
  17. 技术升级 | 戴着口罩也能识别人脸啦
  18. 屠光绍:公司债启动时机成熟 市场意义重大
  19. TCPMP编译方法(转载)
  20. 使用Java编写Palm OS程序的解决方案

热门文章

  1. MATLAB中rand,randi,randn函数,及rand('state',0)和rand('seed',0)产生随机种子详解
  2. linux中文输入法的实现
  3. jenkins搭建流程
  4. 15+ tar command usages with examples – Unix/Linux--reference
  5. 火狐浏览器修改userAgent
  6. 强监管下 协议支付会是互金平台救命稻草?(协议支付是代扣协议的升级版)
  7. 阿里巴巴大数据之路——数据模型篇
  8. uni-app开发所有前端应用的框架
  9. 从变量到封装:一文带你为机器学习打下坚实的Python基础 By 机器之心2017年10月13日 10:43 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要的且常
  10. 回归、分类与聚类:三大方向剖解机器学习算法的优缺点