计蒜客 跳跃游戏二 (动态规划)

本文介绍了一个使用动态规划解决的问题:给定一系列跳跃步数,如何找到达到终点所需的最小步数。通过初始化动态规划数组并逐步更新,最终得出最优解。

    多次动态更新(更新样例)

        

#include<map>
#include<stack>
#include<math.h>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define View ios::sync_with_stdio(false);
#define pi acos(-1)
using namespace std;
typedef long long ll;
const int MAX_N=2e6+50;
const int INF=0x3f3f3f3f;

int dp[MAX_N];
int a[MAX_N];

int main()
{
	int n;
	cin>>n;
	for(int i = 1; i <= n ; i++)
	{
		dp[i] = INF;
	}
	for(int i = 1; i <= n ; i++)
	{
		cin>>a[i];	
	} 
	dp[1]=0;
	for(int i = 1; i <= n ;i++)
	{
		for(int j = 1; j<= a[i]; j++)
		{
			dp[i+j] = min(dp[i+j],dp[i]+1);
		}
	}
	cout<<dp[n]<<endl;
	return 0;
}


                
网是一个提供编程练习和算法训练的平台,其中包含大量与贪心算法相关的题目。以下是一些常见的贪心算法题目示例,适合不同水平的学习者进行练习: ### 牛网上常见的贪心算法题目 1. **活动选择问题** - 题目描述:给定一系列活动的开始和结束时间,选择尽可能多的互不重叠的活动。 - 解题思路:按照活动的结束时间进行排序,然后依次选择最早结束的活动,避免冲突。 2. **背包问题(分数背包)** - 题目描述:给定一个固定容量的背包和若干物品,每个物品有重量和价值,要求在不超过背包容量的情况下,装入物品使得总价值最大。物品可以分割。 - 解题思路:算每个物品的单位重量价值,优先选择单位价值最高的物品。 3. **哈夫曼编码** - 题目描述:给定一组字符及其出现频率,构造一棵哈夫曼树,使得编码后的数据长度最短。 - 解题思路:每次选择频率最小的两个节点合并,直到所有节点合并为一棵树。 4. **任务调度问题** - 题目描述:给定多个任务的开始和结束时间,安排任务调度使得完成时间最短。 - 解题思路:根据任务的结束时间进行排序,优先安排最早结束的任务。 5. **区间调度问题** - 题目描述:给定多个区间,选择尽可能多的不重叠区间。 - 解题思路:按照区间的结束时间排序,依次选择最早结束的区间,并跳过与之冲突的区间。 6. **加油站问题** - 题目描述:一辆车沿着一条环形公路行驶,每个加油站都有一定的汽油量,判断是否可以从某个起点出发完成整个旅程。 - 解题思路:遍历所有加油站,算当前油量是否可以到达下一个加油站,若油量不足则更新起点。 7. **跳跃游戏** - 题目描述:给定一个数组,数组中的每个元素表示在该位置可以跳跃的最大步数,判断是否可以从起点跳跃到终点。 - 解题思路:维护一个变量记录当前能够到达的最远位置,逐步更新该变量。 ### 示例代码:跳跃游戏 以下是一个跳跃游戏的Python实现示例: ```python def canJump(nums): max_reach = 0 # 当前能够到达的最远位置 for i in range(len(nums)): if i > max_reach: return False # 当前位置无法到达 max_reach = max(max_reach, i + nums[i]) # 更新最远位置 if max_reach >= len(nums) - 1: return True # 已经可以到达终点 return False ``` ### 相关问题 1. 牛网上的贪心算法题目如何分类? 2. 贪心算法与动态规划的区别是什么? 3. 如何判断一个题目是否适合使用贪心算法? 4. 牛网上的贪心算法题目是否有难度分级? 5. 贪心算法在实际编程竞赛中的应用场景有哪些?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃货智

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值