华为OD机试 - 分披萨 - 动态规划(Java 2024 C卷 200分)

在这里插入图片描述

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

“吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。

但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。

由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从“吃货”开始,轮流取披萨。

除了第-块披萨可以任意选取以外,其他都必须从缺口开始选。 他俩选披萨的思路不同。

“馋嘴”每次都会选最大块的拨萨,而且“吃货”知道“馋嘴”的想法。

已知披萨小块的数量以及每块的大小,求“吃货”能分得的最大的披萨大小的总和。

二、输入描述

第1行为一个正整数奇数 N ,表示披萨小块数量。其中 3 ≤ N< 500

接下来的第 2 行到第 N+1 (共 N 行),每行为一个正整数,表示第i块披萨的大小, 1≤i≤N 。

披萨小块从某一块开始,按照一个方向次序顺序编号为 1 ~ N ,每块披萨的大小范围为[1,2147483647]。

三、输出描述

”吃货“能分得到的最大的披萨大小的总和。

四、解题思路

  1. 将输入的披萨小块按照大小进行排序。
  2. 使用动态规划的方法来解决这个问题。我们可以定义一个数组 dp[i] 表示从第 i 块披萨开始,“吃货”能分得的最大披萨大小的总和。
  3. 对于每一块披萨,我们可以选择取或者不取。如果我们选择取这块披萨,那么“吃货”能分得的总和就是 dp[i-1] + pizza[i],其中 pizza[i]
  4. 第 i 块披萨的大小。如果我们选择不取这块披萨,那么“吃货”能分得的总和就是 dp[i-2] + pizza[i]。
  5. 最后,找到 dp[N]、dp[N-1]、…、dp[1] 中的最大值,即为“吃货”能分得的最大披萨大小的总和。

五、Java算法源码

public class Test02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();int[] pizza = new int[N];for (int i = 0; i < N; i++) {pizza[i] = sc.nextInt();}sc.close();// 对披萨小块按照大小进行排序Arrays.sort(pizza);// 初始化动态规划数组long[] dp = new long[N];dp[0] = pizza[0];dp[1] = Math.max(pizza[0], pizza[1]);// 动态规划求解for (int i = 2; i < N; i++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + pizza[i]);}// 输出结果System.out.println(dp[N - 1]);}
}

六、效果展示

1、输入

5
8
2
10
5
7

2、输出

19

3、说明

此例子中,有 5 块披萨。每块大小依次为 8 、2 、10 、5 、7。

按照如下顺序拿披萨,可以使”吃货拿到最多披萨:

  1. “吃货”拿大小为 10 的披萨
  2. “馋嘴”拿大小为5的披萨
  3. “吃货”拿大小为7 的披萨
  4. “馋嘴”拿大小为 8 的披萨
  5. ”吃货“拿大小为2 的披萨

至此,披萨瓜分完毕,”吃货“拿到的披萨总大小为 10+7+2=19

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖去推短视频矩阵系统----源头开发

为什么一直说让企业去做短视频矩阵&#xff1f;而好处就是有更多的流量入口&#xff0c;不同平台或账号之间可以进行资源互换&#xff0c;最终目的就是获客留咨&#xff0c;提单转化。你去看一些做得大的账号&#xff0c;你会发现他们在许多大的平台上&#xff0c;都有自己的账…

HTML5 <video> 标签属性、API 方法、事件、自定义样式详解与实用示例

HTML5 <video> 标签为网页内嵌视频提供了强大且便捷的功能。以下是对 <video> 标签的主要属性、API 方法、事件、自定义样式及其使用示例的详细介绍&#xff1a; 一、属性 1. src 定义&#xff1a;指定视频文件的 URL。示例&#xff1a;<video src"my_v…

【C++杂货铺】继承

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 继承的概念和定义 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 基类和派生类对象赋值转换 &#x1f4c1; 继承中的作用域 &#x1f4c1; 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…

利用vue3SeamlessScroll 简单实现列表的无限循环滚动

Vue3SeamlessScroll 该组件用于实现列表的无限循环滚动 1、安装 npm i vue3-seamless-scroll 2、导入及基本使用 <!--组件.vue--> <script setup>import { Vue3SeamlessScroll } from vue3-seamless-scroll;import {ref} from vue//vue3导入组件是不需要用com…

有公网IP,如何设置端口映射实现访问?

很多中小型公司或个人会根据自身需求自建服务器&#xff0c;或者将自己内网的服务、应用发布到外网&#xff0c;实现异地访问&#xff0c;如远程桌面、网站、数据库、公司的管理系统、FTP、管家婆、监控系统等等。 没接触过的人可能会觉得这个很难&#xff0c;实际上使用快解析…

Golang插件系统实现

插件可以在解耦的基础上灵活扩展应用功能&#xff0c;本文介绍了如何基于Golang标准库实现插件功能&#xff0c;帮助我们构建更灵活可扩展的应用。原文: Plugins with Go 什么是插件 简单来说&#xff0c;插件就是可以被其他软件加载的软件&#xff0c;通常用于扩展应用程序的功…

浅谈-“指针”

为什么要使用指针&#xff1f; 1.函数的值传递&#xff0c;无法通过调用函数&#xff0c;来修改函数的实参 2.被调用函数需要提供更多的“返回值”给调用函数 3.减少值传递时带来的额外开销&#xff0c;提高代码执行效率 ---> int a[10] > 40 字节 int *p; pa;…

Spring Boot 打印 Controller 返回的body数据

背景是获取Controller类输出的结果数据。 实现方案&#xff0c;使用RestControllerAdviceResponseBodyAdvice接口。不能使用Interceptor&#xff0c;在执行Interceptor时&#xff0c;response已经提交。也可以考虑aspect方案&#xff0c;不过实现麻烦些&#xff0c;增加较多的…

[入门]测试层级-ApiHug准备-测试篇-005

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 这里的测…

WebKit结构深度解析:打造高效与安全的浏览器引擎

WebKit结构深度解析&#xff1a;打造高效与安全的浏览器引擎 在现代网络世界中&#xff0c;浏览器作为连接用户与互联网信息的桥梁&#xff0c;其背后的技术架构至关重要。WebKit&#xff0c;作为当今最流行的开源浏览器引擎之一&#xff0c;其结构设计和功能实现对于提升浏览…

统一SQL-number/decimal/dec/numeric转换

统一SQL介绍 https://www.light-pg.com/docs/LTSQL/current/index.html 源和目标 源数据库&#xff1a;Oracle 目标数据库&#xff1a;Postgresql&#xff0c;TDSQL-MySQL&#xff0c;达梦8&#xff0c;LightDB-Oracle 操作目标 通过统一SQL&#xff0c;将Oracle中的numb…

持续集成和持续部署

持续集成&#xff08;Continuous Integration&#xff0c;简称CI&#xff09;和持续部署&#xff08;Continuous Deployment&#xff0c;简称CD&#xff09;是现代软件开发中的重要实践&#xff0c;旨在提高开发团队的效率和软件交付的质量。 持续集成是指开发人员将代码频繁地…

学习STM32第十五天

SPI外设 一、简介 STM32F4XX内部集成硬件SPI收发电路&#xff0c;可以由硬件自动执行时钟生成、数据收发等功能&#xff0c;减轻CPU负担&#xff0c;可配置8位/16位数据帧&#xff0c;高位&#xff08;最常用&#xff09;/低位先行&#xff0c;三组SPI接口&#xff0c;支持DMA…

《AI编程类工具之四——GitHub copiot》

一.简介 官网&#xff1a;https://github.com/features/copilot GitHub Copilot是由GitHub和OpenAI合作开发的一款人工智能编程助手。这款工具基于OpenAI的GPT-3模型进行训练&#xff0c;旨在帮助开发者更高效地编写代码。 二.功能介绍 智能代码补全&#xff1a;GitHub Cop…

.NetCore——自定义筛选器

【异常筛选器】 在 ASP.NET Core Web API 中,异常处理是一个非常重要的环节,如果程序中出现未处理异常,就会生成响应报文。通过捕获和处理异常,我们可以确保应用程序的健壮性,并向用户提供友好的错误响应。ASP.NET Core 提供了一种机制,即异常筛选器(Exception Filters…

第一篇【传奇开心果系列】我和AI面对面聊编程:深度比较PyQt5和tkinter.ttk

传奇开心果系列博文 系列博文目录我和AI面对面聊编程系列 博文目录前言一、今天我们面对广大读者选择PyQt5和tkinter.ttk做比较这个话题目的是什么&#xff1f;二、举一个最简单的pyqt5信号和插槽的例子三、这和tkinter的点击事件有什么区别&#xff1f;四、如何选择&#xff1…

MySQL Explan执行计划详解

Explan执行计划 首先我们采用explan执行计划 执行一条sql&#xff0c;发现返回了12个列&#xff0c;下面会详细解释每一列 1、ID列 id列的值是代表了select语句执行顺序&#xff0c;是和select相关联的&#xff1b;id列的值大的会优先执行&#xff0c;如果id列为空最后执行&a…

数据库的创建

数据库分类 通过查看对象资源管理器来区分数据库类型 数据库物理文件的组成 : 数据库文件 日志文件 创建一个主数据文件和一个日志文件

上线流程及操作

上节回顾 1 搜索功能-前端&#xff1a;搜索框&#xff0c;搜索结果页面-后端&#xff1a;一种类型课程-APIResponse(actual_courseres.data.get(results),free_course[],light_course[])-搜索&#xff0c;如果数据量很大&#xff0c;直接使用mysql&#xff0c;效率非常低--》E…

kafka安装与相关配置详解

一、安装 1、下载与解压 tar -xzf kafka_2.13-3.7.0.tgz cd kafka_2.13-3.7.02、启动 bin/kafka-server-start.sh config/server.properties3、后台启动 bin/kafka-server-start.sh -daemon config/server.properties4、zookeeper [admin, brokers, cluster, config, con…