首页 > 试题广场 >

跳跃游戏(二)

[编程题]跳跃游戏(二)
  • 热度指数:4831 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个非负整数数组nums,假定最开始处于下标为0的位置,数组里面的每个元素代表下一跳能够跳跃的最大长度,如果可以跳到数组最后一个位置,请你求出跳跃路径中所能获得的最多的积分。
1.如果能够跳到数组最后一个位置,才能计算所获得的积分,否则积分值为-1
2.如果无法跳跃(即数组长度为0),也请返回-1
3.数据保证返回的结果不会超过整形范围,即不会超过
数据范围:




输入描述:
第一行输入一个正整数 n 表示数组 nums的长度
第二行输入 n 个整数,表示数组 nums 的所有元素的值


输出描述:
输出能获得的最多的积分
示例1

输入

6
2 4 2 1 0 100

输出

106

说明

首先位于nums[0]=2,然后可以跳1步,到nums[1]=4的位置,积分=2+4=6,再跳到nums[5]=100的位置,积分=6+100=106
这样保证既能跳到数组最后一个元素,又能保证获取的积分最多    
示例2

输入

6
2 4 0 2 0 100

输出

108

说明

跳跃路径为:2=>4=>2=>100,总共为108        
示例3

输入

6
2 3 2 1 0 100

输出

-1

说明

跳不到最后一个位置,返回-1       
头像 牛客687146177号
发表于 2022-05-25 09:21:51
跳跃游戏二: 有没有人感觉牛客网的题解都是只上代码,不给思路的。只上代码总觉得是在直接抄答案。 这道题我先找了leetcode发现没有这道题。于是我想到了leetcode的跳跃游戏一的视频题解。上面说到了方法2用倒推的方式。我们在这道题上用倒推变形。 首先最后一个数组元素一定是包含在最大分数中的。然 展开全文
头像 牛客831486771号
发表于 2023-02-08 16:42:23
第一种方法是DP函数通过递归加回溯,从0位置从前往后找出所有能够到达终点的路径,将结果累加到sum中,若能到达终点且sum>max就赋值给max,但是复杂度过大pass掉了。 第二种方法是通过从后向前的循环,找出能走通的每一个节点并进行累加,就是这么简单。。。。。。 #include < 展开全文
头像 Coming680
发表于 2022-03-02 19:50:25
#include<iostream> using namespace std; int dp[100000]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; bool ans = 展开全文
头像 牛客338956253号
发表于 2023-02-08 01:38:55
#include <iostream> #include <vector> using namespace std; int main() { int n; while (cin >> n) { vector<int> 展开全文
头像 卢然小子
发表于 2022-07-17 10:47:11
描述 给定一个非负整数数组nums,假定最开始处于下标为0的位置,数组里面的每个元素代表下一跳能够跳跃的最大长度,如果可以跳到数组最后一个位置,请你求出跳跃路径中所能获得的最多的积分。 1.如果能够跳到数组最后一个位置,才能计算所获得的积分,否则积分值为-1 2.如果无法跳跃(即数组长度为0),也请 展开全文
头像 湮雨
发表于 2025-07-02 14:05:24
#include <iostream> #include <vector> using namespace std; int main() { int n; cin>>n; if(n==0) cout<<-1; vec 展开全文
头像 lhp_zml
发表于 2024-10-24 16:56:01
// 掉转思维,从后往前走, (上一个,当前一个,下一个) // 从后往前遍历,若下一个能够得上当前这个则选取它。 // 因为从前往后走时,如果上一个能够的上下一个,则上一个一定能够得上当前一个,因为是非负整数,选了不会亏 #include<iostream> using namesp 展开全文
头像 牛客356358940号
发表于 2022-05-25 15:00:14
https://www.nowcoder.com/questionTerminal/58e31b785f4b4ced9695dd4fcd60c1ce 属于第一题的衍生,多设置一个参数score存放nums的值,当满足题意时将nums值叠加到score的结果中 class Sol 展开全文
头像 有一套的牛可乐为你答疑解惑
发表于 2025-06-05 18:59:56
import sys n = int(sys.stdin.readline().strip()) data = list(map(int, sys.stdin.readline().strip().split())) dp=[0]*n start = n - 1 for i in range(n - 展开全文
头像 有一套的牛可乐为你答疑解惑
发表于 2025-06-05 19:00:17
import sys n = int(sys.stdin.readline().strip()) data = list(map(int, sys.stdin.readline().strip().split())) dp=[0]*n start = n - 1 for i in range(n - 展开全文