数据结构实验之串三:KMP应用

10个小孩分糖果问题源码 使用计算机求解以下问题。 十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖? 。 (1) 界面友好,由用户按键控制每个步骤,每个步骤结束后要显示每个小朋友手中的糖的块数。有提示信息或菜单帮助用户完成操作。可以使用字符界面。 (2) 程序模块及功能 ①主控模块:接受用户的控制信息,完成操作并显示每步骤结果,在条件满足后退出。 ②显示模块:显示每个小朋友拥有糖块数目; ③操作模块:所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。 程序设计建议。数据结构:使用数组存储每个小朋友手中的糖的块数,如int blocks[10]; 立即下载

数据结构实验之串三:KMP应用

Time Limit: 1000MS Memory Limit: 65536KB
Problem Description

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

Input

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

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

Output

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

Example Input
5
1 2 3 4 5
3
2 3 4
Example Output
2 4
Hint
Author
windream
</pre><pre code_snippet_id="1949471" snippet_file_name="blog_20161026_1_9327761" name="code" class="cpp">
<pre name="code" class="cpp">#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[1000000+5], b[1000000+5];
int next[1000000+5], n, m;
void getnext() {
    next[0]=-1;
    int i=0, j=-1;
    while(i<n) {
        if(j==-1||b[i]==b[j]) {
            i++;
            j++;
            next[i]=j;
        }
        else j=next[j];
    }
}
void kmp() {
    getnext();
    int i=0, j=0;
    while(i<n&&j<m) {
        if(a[i]==b[j]||j==-1) {
            i++;
            j++;
        }
        else j=next[j];
    }
    if(j>=m) {
        int x=i;
        j=0;
        while(i<n&&j<m) {
            if(a[i]==b[j]||j==-1) {
                i++;
                j++;
            }
            else j=next[j];
        }
        if(j>=m) printf("-1\n");
        else printf("%d %d\n", x-m+1, x);
    }
    else printf("-1\n");
}
int main() {
    scanf("%d", &n);
    for(int i=0;i<n;i++)
        scanf("%d", &a[i]);
    scanf("%d", &m);
    for(int i=0;i<m;i++)
        scanf("%d", &b[i]);
    kmp();
    return 0;
}


 


 
 

AOSP14 Launcher3——手势上滑关键类AbsSwipeHandler解析 通过精密的事件监听、状态管理和对系统动画 API 及 Launcher 内部组件的协调,实现了复杂而流畅的手势导航体验。它的抽象设计允许子类(如。是 Quickstep (Launcher3 的手势导航实现) 中处理。的核心逻辑抽象基类。这个非常核心且复杂的类。)定制特定的回家动画逻辑。好的,我们来深入分析。 阅读详情

相关推荐

论文阅读4——一种宽频带圆极化微带天线的设计

论文阅读——一种宽频带圆极化微带天线的设计(现在才觉得开始弄懂了一点,懂了一点之后又更糊涂了……)

weixin_64612422的博客 2317

力扣第135题 分发糖果 c++ 贪心 加 思维

相关标签n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。5你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。4你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

lenyan~的博客 762

数字加网(一)— —概念及分色合成

由于大多数图像复制设备是二值设备,因此在图像复制过程中,必须先把连续调的灰度图像或彩色图像处理成二值的半色调图像,用单位面积的网点覆盖率来表现图像的颜色深浅变化。这个过程被称之为加网(Screening) 数字加网就是根据人眼视觉的空间混色特性,用人眼无法分辨的细小黑白点的单位覆盖面积来模拟灰度图像或彩色图像的层次变化,使得到

Sin_Geek成长の迹 8593

小朋友分糖果-第13届蓝桥杯选拔赛Python真题精选

小朋友分糖果,本题是2022年3月13日举办的第13届蓝桥杯青少组Python编程选拔赛真题编程部分第4题。有N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是N的倍数。请编程计算出最少调整几次可以使每个小朋友的糖果数量相同。

超平的编程课 1458

MOS管开关设计知识-(五种MOS管开关电路图方式)

在使用MOS管设计开关电源或者马达驱动电路的时候,大部分人都会考虑MOS的导通电阻,最大电压等,最大电流等,也有很多人仅仅考虑这些因素。这样的电路也许是可以工作的,但并不是优秀的,作为正式的产品设计也是不允许的。 下面是我对MOSFET及MOSFET驱动电路基础的一点总结,其中参考了一些资料,非全部原创。包括MOS管的介绍,特性,驱动以及应用电路。 1、MOS管种类和结构 MOSFET管是FET的...

树卡花 7万+

通达信-申万宏源金融终端本地数据转sqlite3,2、解析申万宏源C:/zd_swhy_gm/vipdoc/sh/lday的sh600000股票数据

为量化做准备,通达信-申万宏源金融终端本地数据转sqlite3,解析申万宏源C:/zd_swhy_gm/vipdoc/sh/lday的sh600000股票数据

wuyaqi的博客 511

蓝桥杯---试题 历届试题 分糖果

试题 历届试题 分糖果 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。 输入格式   程序首先读入一个整数N(2<N<100),表示小朋友的人数。   接着是

雪岩的博客 575

Unity零基础到进阶 ☀️| Unity中的 GC及优化 超级全面解析 ☆(ゝω・)v 建议收藏!

介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用。内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程。 Unity中将垃圾回收当作内存管理的一部分,如果游戏中废弃数据占用内存较大,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点。 本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提GC收效率来提高游戏的性能。 Unity内存管理机制简介 要想了解垃圾回收如何工作以及何时被

努力前行,总会成为自己心中的那道光 6万+

【kmp算法】数据结构实验之串三:KMP应用

Think: 1知识点:kmp算法 2题意:先输入n,然后输入n个数字,再输入m,然后再输入m个数字,询问这m个数是否为n个数字的唯一子区间[l, r],若是,则存在子区间[l, r]则输出l, r,若不存在则输出-1 3反思: (1):区间[l, r]必须是唯一存在 (2):当第一次寻找到一个区间[l, r]之后再次寻找判断是否是唯一存在时,要注意再次寻找时的出发位置SDUT题目链接以下

BlessingXRY的博客 677

别让 Claude Code 一直问你“能不能执行“:权限配置完全指南

Claude Code 提供了一套精细的权限配置机制,配置好权限设置,可以提速不少。这个小技巧需要掌握一下。

沐风 3843
上一篇: 数据结构实验之二叉树四:还原二叉树
下一篇: POJ 2513 Colored Sticks
AllBLue1117
博客等级 码龄11年 16粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值