美的的笔试

第一题

有两只猫咪和n条不同类型的鱼,每条鱼都只能被其中一只猫咪吃掉。
下标为i处的鱼被吃掉的得分为:
如果第一只猫咪吃掉,则得分为reward1[i]。如果第二只猫咪吃掉,则得分为reward[i]。
给你一个正整数数组reward1 ,一个正整数数组reward2,和一个非负整数k。
请你返回第一只猫咪恰好吃掉k条鱼的情况下,最大得分为多少。
输入
1 1 3 4
4 4 1 1
2
输出
15
说明
这个例子中,第一只猫咪吃掉第2和3条鱼(下标从0于始),第二只猫咪吃掉第0和1条鱼。
总得分为4+4+3+4=15。
15是最高得分。

思路

  • 定义状态:令 dp[i][j] 表示第一只猫咪吃掉 i 条鱼,第二只猫咪吃掉 j 条鱼时,能得到的最大得分。
  • 初始状态:dp[0][0] = 0,表示两只猫咪都没有吃鱼时,得分为 0。
  • 状态转移:对于每一条鱼,有三种选择:
    • 第一只猫咪吃掉,那么 dp[i][j] = dp[i-1][j] + reward1[i+j-1],其中 reward1[i+j-1] 表示第 i+j-1 条鱼的得分。
    • 第二只猫咪吃掉,那么 dp[i][j] = dp[i][j-1] + reward2[i+j-1],其中 reward2[i+j-1] 表示第 i+j-1 条鱼的得分。
    • 两只猫咪都不吃,那么 dp[i][j] = dp[i][j],不改变得分。
    • 取这三种选择中的最大值作为 dp[i][j] 的值。
  • 最终答案:由于题目要求第一只猫咪恰好吃掉 k 条鱼,那么最终答案就是 dp[k][n-k],其中 n 是鱼的总数。
#include <iostream>
#include <vector>
using namespace std;int maxScore(vector<int>& reward1, vector<int>& reward2, int k) {int n = reward1.size(); // 鱼的总数vector<vector<int>> dp(k + 1, vector<int>(n - k + 1, 0)); // 定义状态数组for (int i = 0; i <= k; i++) { // 遍历第一只猫咪吃掉的鱼数for (int j = 0; j <= n - k; j++) { // 遍历第二只猫咪吃掉的鱼数if (i == 0 && j == 0) continue; // 跳过初始状态int score = 0; // 记录当前得分if (i > 0) { // 如果第一只猫咪可以吃掉一条鱼score = max(score, dp[i-1][j] + reward1[i+j-1]); // 更新得分}if (j > 0) { // 如果第二只猫咪可以吃掉一条鱼score = max(score, dp[i][j-1] + reward2[i+j-1]); // 更新得分}dp[i][j] = score; // 更新状态数组}}return dp[k][n-k]; // 返回最终答案
}int main() {vector<int> reward1 = {1, 1, 3, 4}; // 输入第一只猫咪的得分数组vector<int> reward2 = {4, 4, 1, 1}; // 输入第二只猫咪的得分数组int k = 2; // 输入第一只猫咪要吃掉的鱼数cout << maxScore(reward1, reward2, k) << endl; // 输出最大得分return 0;
}

第二题

在一个城市探险活动中,主办方标记了n个地标,编号为0到n-1。大壮需要从城市的起点(编号为0的地标)经过一系列地标后,最终到达终点(编号为n-1的地标)。每个地标都对应一个整数,表示从当前地标可以跳过的地标数量。例如,如果小王当前处于编号为i的地标,且地标对于的数字为nums[i],那么他可以选择跳过中间所有地标,而是直接去往任意编号为i用j的地标,其中0<=j= nums[i]且i+j<n。主办方确保有路线可以成功到达终点地标,为了顺利到达终点,请帮助大壮计算,他需要经过的最少的地标数量。

输入描述:
地标组数
输出描述:
经过最少地标数量

示例1
输入
[2, 1, 1,3, 1, 3, 1, 4]
输出
4

示例2
输入
[5, 4, 3, 2, 1,2, 3, 1, 1, 2]
输出
3

思路:

  • 定义一个变量 ans 表示经过的地标数量,初始为 0。
  • 定义一个变量 cur 表示当前所在的地标编号,初始为 0。
  • 定义一个变量 next 表示下一步要跳到的地标编号,初始为 0。
  • 使用一个 while 循环,当 cur < n - 1 时,执行以下操作:
    • 遍历从 cur + 1 到 cur + nums[cur] 的所有地标编号 i,找出使得 i + nums[i] 最大的那个 i,并赋值给 next。
    • 如果 next == cur,说明无法继续前进,返回 -1 表示无解。
    • 否则,将 cur 更新为 next,并将 ans 加一。
  • 返回 ans 作为最终答案。

根据以上思路,可以用 C++ 语言编写如下代码:

#include <iostream>
#include <vector>
using namespace std;int minLandmarks(vector<int>& nums) {int n = nums.size(); // 地标的总数int ans = 0; // 经过的地标数量int cur = 0; // 当前所在的地标编号int next = 0; // 下一步要跳到的地标编号while (cur < n - 1) { // 当没有到达终点时int max_jump = 0; // 记录能跳到的最远距离for (int i = cur + 1; i <= cur + nums[cur]; i++) { // 遍历所有可选的地标if (i + nums[i] > max_jump) { // 如果能跳得更远max_jump = i + nums[i]; // 更新最远距离next = i; // 更新下一步目标}}if (next == cur) return -1; // 如果无法前进,返回-1表示无解cur = next; // 更新当前位置ans++; // 更新经过的地标数量}return ans; // 返回最终答案
}int main() {vector<int> nums = {2, 1, 1, 3, 1, 3, 1, 4}; // 输入地标组数cout << minLandmarks(nums) << endl; // 输出经过最少地标数量return 0;
}

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

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

相关文章

英诺森 “供应链智能数据平台”荣获“科技进步奖”

近日&#xff0c;2023年中国物流与采购联合会科学技术奖正式公布&#xff0c;该奖项经国家科技部批准&#xff0c;在国家科学技术奖励工作办公室登记备案&#xff0c;是我国物流行业最具影响力的奖项之一。 英诺森联合客户申报的科技项目“英诺森供应链智能数据平台”&#xf…

1.1 计算机网络在信息时代中的作用

思维导图&#xff1a; 正文&#xff1a; 我的理解&#xff1a; 这段话是一本书或课程的第一章简介&#xff0c;它的目的是为读者或学生提供一个关于计算机网络基础知识的框架或大纲。 首先&#xff0c;它强调了这章是整本书的一个概览&#xff0c;会先介绍计算机网络在信息时…

Python 操作 Excel

之前看过一篇文章&#xff0c;说一个工作多年的老员工&#xff0c;处理数据时只会用复制粘贴到 Excel &#xff0c;天天加班工作还完不成&#xff0c;后来公司就招了一个会 Python 的新人&#xff0c;结果分分钟就处理完成。所以工作中大家经常会使用 Excel 去处理以及展示数据…

C# WPF 自己写的一个模拟病毒传播的程序,有可视化

源代码: https://github.com/t39q/VirusSpread 主要代码 using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace VirusSpread.Bu…

C/C++苹果和虫子 2019年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C苹果和虫子 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C苹果和虫子 2019年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 你买了一箱n个苹果&#xff0c;很不幸…

感应电动机

引言 感应电动机,这个名字对于普通人来说可能有些陌生,但它在我们的日常生活和工作中占据着举足轻重的地位。从各类电器设备到工业生产设备,感应电动机的应用广泛而深入。了解感应电动机的种类和主要结构有助于我们更好地理解其工作原理,从而为我们的生活和工作带来更多便利…

Android Automotive编译

系统准备 安装系统 准备一台安装Ubuntu系统的机器&#xff08;windows系统的机器可以通过WSL安装ubuntu系统&#xff09; 安装docker 本文使用docker进行编译&#xff0c;因此提前安装docker。参考网络链接安装docker并设置为不使用sudo进行docker操作。 参考链接&#xff…

SpringBoot集成swagger

前言&#xff1a; 在现代软件开发中&#xff0c;构建、文档化和测试RESTful Web服务是至关重要的任务之一。API&#xff08;Application Programming Interface&#xff09;作为应用程序之间的桥梁&#xff0c;扮演着关键的角色。然而&#xff0c;有效地设计、记录和消费API并非…

分类算法系列④:朴素贝叶斯算法

目录 1、贝叶斯算法 2、朴素贝叶斯算法 3、先验概率和后验概率 4、⭐机器学习中的贝叶斯公式 5、文章分类中的贝叶斯 6、拉普拉斯平滑系数 6.1、介绍 6.2、公式 7、API 8、示例 8.1、分析 8.2、代码 8.3、⭐预测流程分析 &#x1f343;作者介绍&#xff1a;准大三…

Top 15 开源3D分子蛋白质建模与渲染软件

如今&#xff0c;WebGL 是一种趋势技术&#xff0c;因为它允许开发人员使用现代浏览器作为客户端来创建复杂的 3D 交互式图形、游戏&#xff0c;而无需安装额外的插件、扩展或软件。 WebGL允许浏览器直接与GPU&#xff08;图形处理单元&#xff09;一起工作。 推荐&#xff1a;…

HJ48 从单向链表中删除指定值的节点

Powered by:NEFU AB-IN Link 文章目录 HJ48 从单向链表中删除指定值的节点题意思路代码 HJ48 从单向链表中删除指定值的节点 题意 输入一个单向链表和一个节点的值&#xff0c;从单向链表中删除等于该值的节点&#xff0c;删除后如果链表中无节点则返回空指针。 思路 单向链表…

Java——》线程间是如何通信的

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

企业架构LNMP学习笔记14

默认官方模块&#xff1a; Gzip压缩&#xff1a; 压缩文件&#xff0c;使文件变小了&#xff0c;传输更快了&#xff0c;目前大部分市场浏览器都支持Gzip。 传输的时候省流量。 目的是为了提高用户的加载速度。 #开启gzip压缩 gzip on; #http协议版本 gzip_http_version 1.0…

区块链正在开启一场回归商业,融合商业的新发展

对于区块链来讲&#xff0c;它其实同样在延续着这样一种发展路径。   正如上文所说&#xff0c;区块链正在开启一场回归商业&#xff0c;融合商业的新发展。   而欲要实现这一点&#xff0c;区块链就是要从底层算法&#xff0c;底层数据传输&#xff0c;底层体系的打造着手…

Java网络编程(二)Socket 套接字(TCP和UDP),以及TCP的回显

Socket 套接字 我们软件工作者&#xff0c;着重编写的是应用层的代码&#xff0c;但是发送这个数据&#xff0c;我们就需要将应用层传输到传输层&#xff0c;也就意味着我们需要调用应用层的API&#xff0c;统称为 Socket API。 套接字的分类&#xff1a; 流套接字&#xff…

Redis基础知识(四):使用redis-cli命令测试状态

文章目录 测试Redis服务是否启动查看Redis数据库运行状态 Redis是一款开源的高性能键值数据库&#xff0c;具有快速、灵活、高效、稳定的特点&#xff0c;广泛应用于互联网领域。在开发过程中&#xff0c;我们需要通过测试Redis的状态来保证其正常运行&#xff0c;这就需要使用…

iOS自定义滚动条

引言 最近一直在做数据通信相关的工作&#xff0c;导致了UI上的一些bug一直没有解决。这两天终于能腾出点时间大概看了一下Redmine上的bug&#xff0c;发现有很多bug都是与系统滚动条有关系的。所以索性就关注一下这个小小的滚动条。 为什么要自定义ScrollIndictor 原有的Scrol…

百望云亮相服贸会 重磅发布业财税融Copilot

小望小望&#xff0c;我要一杯拿铁&#xff01; 好的&#xff0c;已下单成功&#xff0c;请问要开具发票嘛&#xff1f; 在获得确认的指令后&#xff0c; 百小望AI智能助手 按用户要求成功开具了一张电子发票&#xff01; 这是2023年服贸会国家会议中心成果发布现场&#x…

搭建hadoop集群的常见问题及解决办法

问题一: namenode -format重复初始化 出现问题的原因是重复初始化时会重新生成集群ID&#xff0c;而dn还是原先的集群ID&#xff0c;两者不匹配时无法启动相应的dn进程。 怎么查找问题原因&#xff1a;在logs目录下找到对应节点的.log文件&#xff0c;使用tail -200 文件名来查…

2023国赛C题解题思路代码及图表:蔬菜类商品的自动定价与补货决策

2023国赛C题&#xff1a;蔬菜类商品的自动定价与补货决策 C题表面上看上去似乎很简单&#xff0c;实际上23题非常的难&#xff0c;编程难度非常的大&#xff0c;第二题它是一个典型的动态规划加仿真题目&#xff0c;我们首先要计算出销量与销售价格&#xff0c;批发价格之间的…