头歌资源库(16)分苹果

一、 问题描述

 二、算法思想 

       首先,我们可以初始化一个数组apple来记录每个孩子分配的苹果数量,将所有元素初始化为1,表示每个孩子至少分配到一个苹果。

       然后,从左到右遍历评分数组ratings,判断当前孩子的评分与前一个孩子的评分的大小关系。若当前孩子的评分大于前一个孩子的评分,则将当前孩子分配的苹果数量设为前一个孩子分配的苹果数量加1,保证相邻孩子评分更高的孩子分配到更多的苹果。

       接着,从右到左再次遍历评分数组ratings,判断当前孩子的评分与后一个孩子的评分的大小关系。若当前孩子的评分大于后一个孩子的评分,并且当前孩子分配的苹果数量不大于后一个孩子分配的苹果数量,则将当前孩子分配的苹果数量设为后一个孩子分配的苹果数量加1,保证相邻孩子评分更高的孩子分配到更多的苹果。

         最后,统计所有孩子分配的苹果数量之和,即为需要准备的最少苹果数目。

三、代码实现

#include <stdio.h>

int minApples(int ratings[], int n) {
    if (n <= 0) return 0;
    int apples[n];
    for (int i = 0; i < n; ++i) apples[i] = 1; // 每个孩子至少分配一个苹果
    
    // 从左向右扫描,保证右边评分高的孩子拿到的苹果比左边多
    for (int i = 1; i < n; ++i) {
        if (ratings[i] > ratings[i - 1]) {
            apples[i] = apples[i - 1] + 1;
        }
    }
    
    // 从右向左扫描,保证左边评分高的孩子拿到的苹果比右边多
    for (int i = n - 2; i >= 0; --i) {
        if (ratings[i] > ratings[i + 1] && apples[i] <= apples[i + 1]) {
            apples[i] = apples[i + 1] + 1;
        }
    }
    
    int totalApples = 0;
    for (int i = 0; i < n; ++i) {
        totalApples += apples[i];
    }
    
    return totalApples;
}

int main() {
    int n;
    scanf("%d", &n);
    int ratings[n];
    for (int i = 0; i < n; ++i) {
        scanf("%d", &ratings[i]);
    }
    
    int minTotalApples = minApples(ratings, n);
    printf("%d", minTotalApples);
    
    return 0;
}

执行结果  

  结语    

学而不思则罔

思而不学则殆

!!!

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

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

相关文章

Docker 简介【虚拟化、容器化】

Docker 简介 Docker 简介什么是虚拟化、容器化案例 为什么要虚拟化、容器化&#xff1f;- 资源利用率高- 环境标准化- 资源弹性伸缩- 差异化环境提供- 沙箱安全- 容器对比虚拟机更轻量&#xff0c;启动更快- 维护和扩展容易 虚拟化实现方式应用程序执行环境分层- 硬件层&#x…

SpringBoot-注解@ImportResource引入自定义spring的配置xml文件和配置类

1、注解ImportResource 我们知道Spring的配置文件是可以有很多个的&#xff0c;我们在web.xml中如下配置就可以引入它们&#xff1a; SprongBoot默认已经给我们配置好了Spring&#xff0c;它的内部相当于已经有一个配置文件&#xff0c;那么我们想要添加新的配置文件怎么办&am…

数据仓库和数据库有什么区别?

一、什么是数据仓库二、什么是数据库三、数据仓库和数据库有什么区别 一、什么是数据仓库 数据仓库&#xff08;Data Warehouse&#xff09;是一种专门用于存储和管理大量结构化数据的信息系统。它通过整合来自不同来源的数据&#xff0c;为企业提供统一、一致的数据视图&…

示例:推荐一个自定义的Ribbon皮肤

一、目的&#xff1a;WPF自带的Ribbon控件功能很强大&#xff0c;但使用过程中感觉显示的样式不是很好&#xff0c;或者不适合自己的项目&#xff0c;下面介绍一个基于自带Ribbon控件样式的修改&#xff0c;主要修改了些高度&#xff0c;间距&#xff0c;背景色&#xff0c;前景…

es的检索-DSL语法和Java-RestClient实现

基本语法&#xff1a; GET /索引库名/_search {"query": {"查询类型": {"查询条件"}} }RestClient的导入在RestClient操作索引库和文档有介绍 查询所有&#xff1a; # 查询所有 GET /test/_search {"query": {"match_all"…

Go 三色标记法:一种高效的垃圾回收策略

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

2024年6月计算机视觉论文推荐:扩散模型、视觉语言模型、视频生成等

6月还有一周就要结束了&#xff0c;我们今天来总结2024年6月上半月发表的最重要的论文&#xff0c;重点介绍了计算机视觉领域的最新研究和进展。 Diffusion Models 1、Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation LlamaGen&#xff0c;是一个…

学习VXLAN -- 报文结构、原理和配置

目录 VXLAN背景什么是VXLANVXLAN的优势VXLAN报文结构一些特定名词BDVBDIFVAPVSIVSI-InterfaceAC VXLAN的实现原理图VXLAN MAC地址表项MAC地址动态学习 VXLAN隧道VXLAN隧道工作模式L2 GatewayIP Gateway VXLAN隧道的建立与关联VXLAN隧道建立的方式VXLAN对到与VXLAN关联的方式 配…

搭建大型分布式服务(四十一)SpringBoot 整合多个kafka数据源-支持亿级消息生产者

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

PD虚拟机和VMware有什么区别?PD虚拟机和VMware谁更好用?

随着电脑硬件设备的飞快发展&#xff0c;一些高端的技术已经不再遥不可及&#xff0c;比如虚拟化&#xff0c;虚拟机技术已经成为IT领域和个人用户不可或缺的工具。特别是PD虚拟机&#xff08;Parallels Desktop&#xff09;和VMware&#xff0c;作为市场上两个主流的虚拟机软件…

智能优化算法改进策略之局部搜索算子(四)--梯度搜索法

2、仿真实验 以海洋捕食者算法&#xff08;MPA&#xff09;为基本算法。考察基于梯度搜索的改进海洋捕食者算法&#xff08;命名为GBSMPA&#xff09; vs. 海洋捕食者算法&#xff08;MPA&#xff09; 在Sphere函数上的比较 在Penalized1函数上的比较 在CEC2017-1上的比较 在C…

本地离线模型搭建指南-本地运行显卡选择

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

WordPress视频主题Qinmei 2.0

WordPress视频主题Qinmei 2.0&#xff0c;简单漂亮的WP视频站源码 主题功能 可以根据豆瓣ID直接获取到其他详细信息&#xff0c;省去慢慢填写的痛苦&#xff1b;播放器支持直链&#xff0c;解析&#xff0c;m3u8格式&#xff0c;同时解析可匹配正则自动更改&#xff1b;新增动…

独立看门狗窗口开门狗

独立看门狗 接线图&#xff1a;按键用于阻塞喂狗。独立看门狗&窗口开门狗接线一样。 第一步&#xff0c;是开启时钟了&#xff0c;只有这个LSI时钟开启了独立看门狗才能运行&#xff0c;所以初始化独立看门狗之前&#xff0c;LSI必须得开启&#xff0c;但是这个开启LSI的…

【机器学习300问】128、简述什么Word2Vec?

一、一句话说明Word2Vec是什么&#xff1f; Word2Vec是一种常见的词嵌入技术。Word2Vec的目标是将每个词表示为一个向量&#xff0c;使得这些向量能够反映出词语之间的相似性和关联性。 word2vec算法通过预测中心词和上下文词的共现概率来学习词向量&#xff0c;能够捕捉词语之…

WordPress软件下载主题Inpandora

Inpandora&#xff08;中文名为潘多拉&#xff09;是一款基于软件下载站定制的WordPress主题&#xff0c;帮助站长使用WordPress快速搭建一个专业的WordPress软件博客。Inpandora这款WordPress主题可以说是因软件而生&#xff0c;从UI设计到后台设置功能&#xff0c;都充分体现…

高德地图轨迹回放/轨迹播放

前言 本篇文章主要介绍高德地图的轨迹回放或播放的实现过程&#xff0c;是基于vue2实现的功能&#xff0c;同时做一些改动也是能够适配vue3的。其中播放条是用的是element UI中的el-slider组件&#xff0c;包括使用到的图标也是element UI自带的。可以实现轨迹的播放、暂停、停…

导入别人的net文件报红问题sdk

1. 使用cmd命令 dotnet --info 查看自己使用的SDK版本 2.直接找到项目中的 global.json 文件&#xff0c;右键打开&#xff0c;直接修改版本为本机的SDK版本&#xff0c;就可以用了

【STM32】STM32通过I2C实现温湿度采集与显示

目录 一、I2C总线通信协议 1.I2C通信特征 2.I2C总线协议 3.软件I2C和硬件I2C 二、stm32通过I2C实现温湿度&#xff08;AHT20&#xff09;采集 1.stm32cube配置 RCC配置&#xff1a; SYS配置&#xff1a; I2C1配置&#xff1a; USART1配置&#xff1a; GPIO配置&#…

智慧校园综合管理系统的优点有哪些

在当今这个信息化飞速发展的时代&#xff0c;智慧校园综合管理系统正逐步成为教育领域的一股革新力量&#xff0c;它悄然改变着我们对传统校园管理的认知。这套系统如同一个无形的桥梁&#xff0c;将先进的信息技术与学校的日常运作紧密相连&#xff0c;展现出多维度的优势。 …