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

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第79讲。

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

先来看看题目的要求吧。

一.题目说明

编程实现:

有N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是N的倍数。计算出最少调整几次可以使每个小朋友的糖果数量相同。

调整规则如下:

规则 1:每个小朋友的糖果只能调整到左右相邻的两个小朋友手中;

规则 2:第一个小朋友的糖果只能调整到第二个小朋友手中;

规则 3:最后一个小朋友的糖果,只能调整到倒数第二个小朋友手中。

例如:1~3 号小朋友原有糖果数量分别为6,4,2。

图片

1)1号小朋友拿出两块给2号小朋友;

2)2号小朋友拿出两块给3号小朋友; 两次操作后三个小朋友手中糖果分别为 4,4,4。

即按照调整规则最少操作2次可以使3个小朋友手中糖果数量都相同。

现按照顺序给出1 ~ N号小朋友手中原有糖果数量,按照调整规则计算出最少调整几次可以使小朋友手中的糖果数量都相同。

输入描述:

输入N个正整数(1 < 正整数 < 100),表示1到N号小朋友手中原有糖果数量,正整数之间以一个英文逗号隔开,且所有正整数之和是N的倍数

输出描述:

按照调整规则计算出最少操作几次可以使小朋友手中糖果数量都相同

样例输入:

6,4,2

样例输出:

2

二.思路分析

这是一道算法题,涉及的知识点包括循环、条件、列表和模拟算法等。

糖果是每个小朋友都非常喜欢的零食,分糖果也是我们非常熟悉的场景。

图片

对于本题中所描述的调整规则,如何保证调整次数最少呢,这其中又有什么规律和奥妙呢?

还是从实际案例入手吧,假设有5个小朋友,糖果数量分别为6, 4, 3, 1, 1,如图:

图片

总糖果数量为15,平均下来,每个小朋友可以分得3颗糖果。

其调整过程如下:

图片

看起来非常简单,都是从左边往右边调整,这是因为糖果数量是一个递减数列。

它有这么一个特点:处在左侧的小朋友糖果数量大于平均值,处在右侧的小朋友数量小于平均值。

所以,我们只需要从左到右依次调整,每一个小朋友只需要保留3颗糖果,其余的给到右边相邻的小朋友。

再调整一下顺序,如果5个小朋友的糖果数量依次是1, 1, 3, 4, 6,会是什么情况呢?

图片

其实很简单,换个顺序,从右到左就可以了,如图所示:

图片

继续调整顺序,如果5个小朋友的糖果数量是1, 3, 6, 1, 4呢,又该如何调整呢?

是从左到右,还是从右到左,亦或是从中间开始呢?

由于数据不具备单调性(递增或递减),无法通过一次从左到右或从右到左进行调整,需要分两次调整。

不妨先从左到右进行调整,由于第1个、第2个小朋友的糖果数量小于平均值3,因此保持不动。

第3个小朋友的糖果数量为6,需要调整,关键是向右调整多少颗呢?

有的同学可能会说3颗,自己保留3颗嘛。

不对,如果向右调整3颗的话,呆会儿还得调整回来,实际情况应该是右边缺多少,就调整多少。

右边还有两个小朋友,一共5颗糖果,还缺1颗,所以只需要向右调整1颗就行,如图所示:

图片

然后再换个方向, 从右到左进行调整,规则还是一样的,左边缺多少就调整多少,如图所示:

图片

从左到右调整了1次,从右到左又调整了3次,一共需要调整4次。

综合上述三种情况,我们可以统一处理,分两步:

1). 从左到右依次处理,如果当前糖果数量 > 平均值,则计算右边需要多少颗糖果并调整;

2). 从右到左依次处理,如果当前糖果数量 > 平均值,则计算左边还需要多少颗糖果并调整。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们编写程序如下:

图片

代码不少,强调三点:

1). 在遍历每一个小朋友的时候,都需要计算左侧和右侧需要的总糖果数量,直接使用列表的切片运算结合sum()函数即可;

2). 调整的条件有两个,一个是当前糖果数量 > 平均值,二是右侧或左侧还缺少糖果,二者缺一不可;

3). 糖果只能给到左边和右边相邻的小朋友,不能跳过。

至此,整个程序就全部完成了,你可以输入不同的数据来测试效果啦。

四.总结与思考

本题代码在20行左右,涉及到的知识点包括:

  • 循环语句;

  • 条件语句;

  • 列表操作;

  • 枚举算法;

本题代码不少,难度也较大,关键在于如何找到调整糖果的逻辑,我们可以通过举例法,找到其通用规律。

本题涉及到算法有两个,一是枚举算法,二是模拟算法。

枚举算法比较简单,就是使用循环把所有的情况都列举出来进行相应的处理。

模拟算法,就是利⽤计算机对⼀个过程进⾏模拟,并从中得出答案。比如,可以使用计算机模拟抛硬币得到正反面概率的情况,又比如模拟掷骰子、猜数字游戏等。

通常来说,模拟算法并没有固定的套路,具体问题需要具体分析。可以使用有代表性的数据来模拟解决问题的过程,找出其核心逻辑和通用规律。

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685978.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apple开发者macOS设备与描述文件Profile创建完整过程

安装并打开Apple Configurator 新建描述文件 输入macOS平台的描述文件的相关信息,然后选择证书 选择一个可用证书 存储描述文件 存储成功如下: 使用文本编辑器打开刚才保存的描述文件,找到设备名与UDID

OrangePi Kunpeng Pro 开发板开箱体验

目录 一、操作系统和软件支持 &#xff08;一&#xff09;系统演示 &#xff08;二&#xff09;制作简易家庭音影平台 安装硬件 初始化硬盘 安装emby server 二、基础硬件方面 &#xff08;一&#xff09;接口介绍 &#xff08;二&#xff09;接口图示 三、对比分析 …

图像算法---自动曝光AE

一&#xff0c;自动曝光AE 自动曝光&#xff08;AE&#xff0c;全称Auto Exposure&#xff09;是一种在摄影和摄像中广泛使用的技术&#xff0c;它允许相机或摄像机根据环境光线条件自动调整曝光参数&#xff0c;以获得清晰、亮度适中的图像或视频。以下是关于自动曝光AE的详细…

无线和移动网络

背景 两个重要的挑战 无线&#xff1a;通过无线链路通信移动&#xff1a;需要网络处理移动&#xff08;不同变换所接入的网络&#xff09;用户 无线网络中的组件 无线主机&#xff08;无线并不总是意味着移动的&#xff09;基站&#xff08;base station 或者叫AP&#xff0…

Web自动化测试框架+PO模式分层实战(超细整理)

前言 PO模式 在UI级的自动化测试中&#xff0c;对象设计模式表示测试正在交互的web应用&#xff0c;程序用户界面中的一个区域&#xff0c;这个是减少了代码的重复&#xff0c;也就是说&#xff0c;如果用户界面发生了改变&#xff0c;只需要在一个地方修改程序就可以了。 优…

快速搭建rtsp server(Ubuntu)

在现代视频监控和实时视频流媒体应用中&#xff0c;实时流协议&#xff08;RTSP&#xff09;服务器扮演着至关重要的角色。无论是家庭安防系统、企业级监控还是流媒体服务&#xff0c;RTSP服务器都能提供高效、稳定的解决方案。然而&#xff0c;对于许多初学者或开发者来说&…

【自定义View】Android圆饼进度条

源码 自定义属性 <?xml version"1.0" encoding"utf-8"?> <resources><declare-styleable name"ArcProgressView"><attr name"android:textSize" /><attr name"bgBorderWidth" format"d…

优雅谈大模型10:MoE

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…

【Python】教你彻底认识Python中的Web开发

​​​​ 文章目录 一、Web开发的基本概念1. Web服务器2. 客户端-服务器模型3. HTTP协议4. 前端与后端 二、常用的Web开发框架1. Django1.1 安装Django1.2 创建Django项目1.3 定义模型1.4 定义视图1.5 定义URL路由1.6 模板 2. Flask2.1 安装Flask2.2 创建Flask应用2.3 模板2.4…

组装服务器重装linux系统【idrac集成戴尔远程控制卡】

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

学习anjuke的过程

一、抓包 先看看12.25.1版本的APP是不是还能使用&#xff0c;如果还能使用我们就先破解低版本的。打开APP后发现还能正常使用&#xff0c;因为低版本的难度低我们就破解这个版本。低版本和高版本的算法是一样的&#xff0c;算法破解之后我们后续抓包替换接口就行了。手机安装上…

重生之 SpringBoot3 入门保姆级学习(17、整合SSM)

重生之 SpringBoot3 入门保姆级学习&#xff08;17、整合SSM&#xff09; 4、数据访问4.1 整合 ssm 4、数据访问 4.1 整合 ssm pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" …

哪吒监控+cfcdn+ 反代grp端口

哪吒监控cfcdn 反代grp端口 背景&#xff1a; 哪吒监控&#xff1a;感觉VPS线路不稳定&#xff0c;为了打消自己潜意识&#xff0c;希望量化延迟。 cfcdn&#xff1a;隐藏真实站点&#xff0c;保障小鸡隐秘安全 反代grpc端口: 反代grpc到支持https(TLS)的端口&#xff0c;这…

ESP32 Error creating RestrictedPinnedToCore

随缘记&#xff0c;刚遇到&#xff0c;等以后就可能不想来写笔记了。 目前要使用到音频数据&#xff0c;所以去用ESP-ADF&#xff0c;但在使用例程上出现了这个API有问题&#xff0c;要去打补丁。 但是我打补丁的时候git bash里显示not apply&#xff0c;不能打上。 网上看到…

OpenCV学习(4.4) 平滑图像

1.目的 在本教程中将学习&#xff1a; 用各种低通滤波器模糊图像。对图像应用自定义过滤器&#xff08;二维卷积&#xff09;。 在图像处理中&#xff0c;平滑图像是一种去噪和模糊技术&#xff0c;用于减少图像中的噪声和细节&#xff0c;使得图像看起来更加平滑。平滑处理…

2024百度之星 跑步

原题链接&#xff1a;码题集OJ-跑步 题目大意&#xff1a;一个n个人在绕圈跑&#xff0c;第i个人跑一圈的时间是i分钟&#xff0c;每二个人位置相同就会打一次招呼&#xff0c;如果同时来到终点&#xff0c;他们就会停下来&#xff0c;请问会打多少次招呼&#xff1f; 思路&a…

文字生成视频!又一王炸!!!(且免费使用!)

VIVA王炸 开场 “ 生成令人惊叹的AI视频&#xff0c;再加上4K视频增强和初学者友好的自动提示优化&#xff0c;为您提供无与伦比的视频创作体验。” 直抒胸臆 自从sora的出现&#xff0c;开启了人工智能的有一个阶段。VIVA是现在唯数不多的与OpenAI的sora互相抗衡。也是为数…

记录遇见的小问题

1&#xff0c;angularjs 使用bootstrap时&#xff0c;遇见模态框怎么点击空白处不关闭&#xff1b; <div id"dialog-modal" data-backdrop"static" data-keyboard"false"> 但是在实际使用过程中调用了一个html 需要在 js里加 $scope.Up…

C语言杂谈:函数栈帧,函数调用时到底发生了什么

我们都知道在调用函数时&#xff0c;要为函数在栈上开辟空间&#xff0c;函数后续内容都会在栈帧空间中保存&#xff0c;如非静态局部变量&#xff0c;返回值等。这段空间就叫栈帧。 当函数调用&#xff0c;就会开辟栈帧空间&#xff0c;函数返回时&#xff0c;栈帧空间就会被释…