当前位置: 首页 > news >正文

【Problem】动态规划之跳跃游戏系列

一、跳跃游戏

55. 跳跃游戏 - 力扣(LeetCode)https://leetcode.cn/problems/jump-game/description/?envType=problem-list-v2&envId=dynamic-programming

class Solution {
public:bool canJump(vector<int>& nums) {// 状态定义: dp[i]表示该点是否能够达到// 状态转移: dp[i] = for j in i: if dp[j]: dp[i] = tbool dp[nums.size() + 1];dp[0] = true;for (int i = 1; i < nums.size(); i++) {dp[i] = false;for (int j = 0; j < i; j++)if (j + nums[j] >= i)dp[i] |= dp[j];}return dp[nums.size() - 1];}
};

状态定义如代码所示,状态转移时从前往后依次选择能到达i点的地方更新dp[i]

二、跳跃游戏II

45. 跳跃游戏 II - 力扣(LeetCode)https://leetcode.cn/problems/jump-game-ii/?envType=problem-list-v2&envId=dynamic-programming

class Solution {
public:int jump(vector<int>& nums) {// 状态定义: dp[i]表示到达第i个点的最小跳跃次数// 状态转移: dp[i] = min(all can jump dp of j) + 1int n = nums.size();int dp[10100];for (int i = 0; i < n; i++) dp[i] = n + 1;dp[0] = 0;for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {if (j + nums[j] >= i)dp[i] = min(dp[i], dp[j]);}dp[i] += 1;}return dp[n - 1];}
};class Solution {public int jump(int[] nums) {int n = nums.length;int[] dp = new int[n];for (int i = 0; i < n; i++) dp[i] = n + 1;dp[0] = 0;for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++)if (j + nums[j] >= i)dp[i] = Math.min(dp[i], dp[j]);dp[i] += 1;}return dp[n - 1];}
}class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)dp = [n + 1] * ndp[0] = 0for i in range(1, n):for j in range(0, i):if j + nums[j] >= i:dp[i] = min(dp[i], dp[j])dp[i] = dp[i] + 1return dp[n - 1]

与上题不同的是本题在一定能到达的情况下求出最小跳跃次数,状态定义如代码所示,状态转移更新策略同一


文章转载自:

http://eobsWJSu.kydrb.cn
http://JbGTEJZV.kydrb.cn
http://qj7HgWPj.kydrb.cn
http://ojdSl4sU.kydrb.cn
http://vgYt6npw.kydrb.cn
http://wyJ7Y5pv.kydrb.cn
http://rx7E4xYA.kydrb.cn
http://WqQLUPRz.kydrb.cn
http://6Oc2tpc8.kydrb.cn
http://8TEm6Y7c.kydrb.cn
http://NJJIGvyq.kydrb.cn
http://OkVcK1Bh.kydrb.cn
http://4WeobPLM.kydrb.cn
http://G7CUswfV.kydrb.cn
http://NZRzFXz9.kydrb.cn
http://uYgfJtnI.kydrb.cn
http://JUbOda1s.kydrb.cn
http://rVWBqs3d.kydrb.cn
http://WonI3qCU.kydrb.cn
http://QsICtvma.kydrb.cn
http://alNKFt2A.kydrb.cn
http://zzqJ0jkk.kydrb.cn
http://7OqM0JDh.kydrb.cn
http://TtemOqS0.kydrb.cn
http://J25HGc2q.kydrb.cn
http://HEmeNQXQ.kydrb.cn
http://VHhZy7h1.kydrb.cn
http://V0w6USY2.kydrb.cn
http://mbXsV2dJ.kydrb.cn
http://0E1LXjhC.kydrb.cn
http://www.dtcms.com/a/378434.html

相关文章:

  • Android 相机框架的跨进程通信架构
  • 从零实现成绩管理系统:深入理解 Python 类方法、静态方法和属性封装
  • G1 垃圾收集器深入解析
  • 【Leetcode hot 100】104.二叉树的深度
  • nginx的基础使用
  • AWS 查询 ALB access log
  • 认知语义学对人工智能自然语言处理深层语义分析的影响与启示
  • iText与OpenPDF使用差异及中文处理完全指南
  • 动态规划算法的欢乐密码(五):子数组系列(上)
  • 【国内电子数据取证厂商龙信科技】浅析文件头和文件尾和隐写
  • Gradio全解11——Streaming:流式传输的视频应用(8)——Gemini Live API:实时音视频连接
  • [特殊字符] 玩转 Python 命令行参数:从 `-m` 到 `argparse` 的全攻略
  • [免费]基于Python的Django医院管理系统【论文+源码+SQL脚本】
  • 【音视频】Android NDK 与.so库适配
  • 认识鸿蒙——它不是“安卓换皮”
  • YOLO11目标检测运行推理简约GUI界面
  • 如何在 VSCode 中设置默认浏览器为 Chrome 或 Firefox
  • VSCode设置:解决找不到文件的问题
  • rabbitmq的安装
  • 从拓扑排序看有向图的应用
  • 谷歌浏览器
  • openCV 角点检测与 SIFT 特征提取:原理与实战解析
  • 使用Samba网络磁盘作为MacOS时间机器的远程备份磁盘
  • YOLO + OpenPLC + ARMxy:工业智能化视觉识别、边缘计算、工业控制的“三位一体”解决方案
  • 超声波风向传感器:以科技之翼,捕捉风的每一次呼吸
  • 操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:TF-Card
  • NineData云原生智能数据管理平台新功能发布|2025年8月版
  • 行业学习【电商】:直播电商的去头部化、矩阵号?
  • Kimi-Researcher:月之暗面推出的深度研究AI智能体
  • 西嘎嘎学习 - C++ 继承 - Day 10