【华为OD题库-036】跳格子2-java

题目

小明和朋友玩跳格子游戏,有n个连续格子组成的圆圈,每个格子有不同的分数,小朋友可以选择从任意格子起跳,但是不能跳连续的格子,不能回头跳,也不能超过一圈:给定一个代表每个格子得分的非负整数数组,计算能够得到的最高分数。
输入描述
给定一个数例,第一个格子和最后一个格子收尾相连,如: 2 3 2
输出描述
输出能够得到的最高分,如: 3
说明
1 <= nums.length <= 100
0 <= nums[] <= 1000
示例1:
输入
2 3 2
输出
说明只能跳3这个格子,因为第一个格子和第三个格子收尾相连
示例2
输入
1 2 3 1
输出
4
说明
1+3=4

思路

先不考虑首尾限制,原题转化为,在一个数组中,找到非连续的格子组合,使其得分最大。
可以考虑动态规划解决。以数据为例:94 40 49 65 10
定义dp[i]代表,在前i个数据时,满足条件的最高分数
初始值:
dp[0]代表只有一个数据,得分应该为nums[0]
dp[1]代表在前两个数据跳,不能相邻,所以dp[1]=max(nums[0],nums[1])
对于i>1的情况,dp[i]分两种情况,取当前值和不取当前值;
如果取当前值,那么最大值为:dp[i-2]+nums[i]
如果不取当前值,那么最大值为:dp[i-1]
dp[i]应该为两者的较大值,即dp[i]=max(dp[i-2]+nums[i],dp[i-1])
从上面的结果来看,我们只关心当前值的上一个值和上上个值,可以使用两个变量来代替dp。
现在考虑首尾限制,可以分为一下两种情况:

  1. 选了第一个就不能选择最后一个
  2. 不选第一个则可以选择最后一个

分别按照不考虑的逻辑计算上面两种情况的结果,然后取较大结果即可。

题解

package hwod;import java.util.Arrays;
import java.util.Scanner;public class JumpCell {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();System.out.println(jumpCell(nums));}private static int jumpCell(int[] nums) {int length = nums.length;if(length==1) return nums[0];if(length==2) return Math.max(nums[0], nums[1]);return Math.max(jumpCellRange(nums, 0, length - 2), jumpCellRange(nums, 1, length - 1));}private static int jumpCellRange(int[] nums, int start, int end) {int before = nums[start], after = Math.max(nums[start], nums[start + 1]);for (int i = start + 2; i <= end; i++) {int temp = after;after = Math.max(before + nums[i], after);before = temp;}return after;}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

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

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

相关文章

Python---把函数的返回值作为另外一个函数的参数

def test1():return 50def test2(num):print(num)# 1. 保存函数test1的返回值 result test1()# 2.将函数返回值所在变量作为参数传递到test2函数 test2(result) # 50

数据结构 栈和队列的应用

在昨天分享了有关栈和队列的基础知识和基本操作后&#xff0c;今天来分享一些有关栈和队列的应用 栈和队列的应用 删除字符串中的所有相邻重复项 #include <iostream> #include <stack> using namespace std; string remove(string S) {stack<char> charS…

MySql表中添加emoji表情

共五处需要修改。 语句执行修改&#xff1a; ALTER TABLE xxxxx CONVERT TO CHARACTER SET utf8mb4;

微型计算机原理MOOC题

一、8254 1.掉坑了&#xff0c;AL传到端口不意味着一定传到的是低位&#xff0c;要看控制字D5和D4&#xff0c;10是只写高位&#xff0c;所以是0A00.。。 2. 3. 4.待解决&#xff1a;

优化C++资源利用:探索高效内存管理技巧

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a; 我们之前在C语言中学习过动态内存开辟&#xff0c;使用malloc、calloc与realloc进行开辟&#xff0c;使用free进行堆上内存的释放。进入C后对于动态内存开辟我们又有了新的内容new与dele…

CCC联盟——UWB MAC(一)

本文在前面已经介绍了相关UWB的PHY之后&#xff0c;重点介绍数字钥匙&#xff08;Digital Key&#xff09;中关于MAC层的相关实现规范。由于MAC层相应涉及内容比较多&#xff0c;本文首先从介绍UWB MAC的整体框架&#xff0c;后续陆续介绍相关的网络、协议等内容。 1、UWB MAC架…

真心的表扬与鼓励,胜过一万句说教

今天我想和大家分享一下&#xff0c;怎样跟孩子运用鼓励和表扬。我记得鲁道夫德雷克斯是阿德勒学派的心理学家&#xff0c;也是来自《孩子的挑战》一书的作者&#xff0c;他说孩子们需要鼓励&#xff0c;就像植物需要水&#xff0c;鼓励能让孩子知道自己做的事与自己是什么样的…

非自定义Bean注解开发Bean配置类的注解开发

目录 非自定义Bean注解开发 Bean配置类的注解开发 非自定义Bean注解开发 非自定义的Bean不能像自定义Bean使用Component进行管理&#xff0c;非自定义Bean要通过工厂的方式进行实例化&#xff0c;使用Bean标注方法即可&#xff0c;Bean的属性文beanName 如果Bean工厂方法需要参…

[23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution

paper | proj | code 提出一种基于K-Planes的4D point cloud Representation&#xff1b;提出一种Hybrid appearance model&#xff0c;包含image blending model和SH model。其中&#xff0c;image blending model将3D点映射回原图中求得&#xff0c;SH model通过模型预测求得…

【工具栏】热部署不生效

目录 配置热部署&#xff1a; 解决热部署不生效&#xff1a; 首先检查&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 配置热部署&#xff1a; https://blog.csdn.net/m0_67930426/article/details/133690559 解决热部署不…

Python中的解析器argparse

import argparse## 构造解析器 argparse.ArgumentParser() parse argparse.ArgumentParser(description"caculateing the area of rectangle")## 添加参数 .add_argument() parse.add_argument("--length",typeint,default20,helpThe length of rectangle…

【追求卓越09】算法--散列表(哈希表)

引导 通过前面几个章节的学习&#xff08;二分查找&#xff0c;跳表&#xff09;&#xff0c;我们发现想要快速查找某一个元素&#xff0c;首先需要将所有元素进行排序&#xff0c;再利用二分法思想进行查找&#xff0c;复杂度是O(logn)。有没有更快的查找方式呢&#xff1f; 本…

微软发布最新.NET 8长期支持版本,云计算、AI应用支持再强化

11 月 15 日开始的为期三天的 .NET Conf 在线活动的开幕日上&#xff0c;.NET 8作为微软的开源跨平台开发平台正式发布。.NET 团队着重强调云、性能、全栈 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮点。.NET团队在 .NET Conf 2023 [1]活动开幕式上表示&#xff1a;“通过这个版…

nginx 模块相关配置及结构理解

文章目录 模块配置结构模块配置指令先看一下 ngx_command_t 结构一个模块配置的demo简单模块配置的案例演示 模块上下文结构模块的定义 模块配置结构 Nginx中每个模块都会提供一些指令&#xff0c;以便于用户通过配置去控制该模块的行为。 Nginx的配置信息分成了几个作用域(sc…

使用注解的AOP编程

使用注解的AOP编程 当注解没有参数时 当使用注解进行面向切面编程&#xff08;AOP&#xff09;时&#xff0c;你可以按照以下步骤来实现&#xff1a; 步骤&#xff1a; 1. 创建自定义注解&#xff1a; 首先&#xff0c;创建自定义的注解&#xff0c;以便在代码中标记需要进…

Excel换不了行怎么解决?

方法一: 使用Alt Enter键 在Excel中&#xff0c;输入文字时按下回车键&#xff0c;光标将会移到下一个单元格&#xff0c;如果想要换行&#xff0c;可以尝试使用Alt Enter键。具体操作如下: 1.在单元格中输入文字; 2.想要换行时&#xff0c;在需要换行的位置按下Alt Enter键; 3…

延时任务定时发布,基于 Redis 与 DB 实现

目录 1、什么是延时任务&#xff0c;分别可以使用哪些技术实现&#xff1f; 1.2 使用 Redis 和 DB 相结合的思路图以及分析 2、实现添加任务、删除任务、拉取任务 3、实现未来数据的定时更新 4、将数据库中的任务数据&#xff0c;同步到 Redis 中 1、什么是延时任务&#xff…

网络运维与网络安全 学习笔记2023.11.23

网络运维与网络安全 学习笔记 第二十四天 今日目标 VRRP负载均衡、BFD原理与配置、BFD典型应用 DHCP工作原理、全局模式DHCP VRRP负载均衡 VRRP单组缺陷 每网段存在一个VRRP组&#xff0c;缺点如下&#xff1a; 主网关数据转发压力大 备份网关不转发任何数据 网络设备利用…

Hook技术(钩子技术)

HOOK&#xff08;钩子技术&#xff09; 这里的hook我理解的意思就是通过拦截指令&#xff0c;将指令换成自己想要的指令&#xff0c;从而做道绕过原本的程序指令&#xff0c;要修改这个指令&#xff0c;要用汇编技术&#xff0c;从二进制入手。 扩展&#xff1a; 木马病毒之…

git clone慢的解决办法

在网站 https://www.ipaddress.com/ 分别搜索&#xff1a; github.global.ssl.fastly.net github.com 得到ip&#xff1a; 打开hosts文件 sudo vim /etc/hosts 在hosts文件末尾添加 140.82.114.3 github.com 151.101.1.194 github.global-ssl.fastly.net 151.101.65.194 g…