二维dp问题

发布时间:2026/10/3 22:55:59

二维dp问题 二维dp问题不同路径不同路径||珠宝的最高价值下降路径最小和最小路径和地下城游戏不同路径题目解析从起始位置到Finish位置有多少种路径每次只可以向下/向右走一格1.状态表示dp[i][j]表示到(i,j)位置路径数2.状态转移方程dp[i][j] dp[i-1][j] dp[i][j-1]3.初始化可以让dp表多创建一行和一列方便初始化dp[0][1] 14.填表顺序从上到下从左向右5.返回值dp[m][n]classSolution{publicintuniquePaths(intm,intn){int[][]dpnewint[m1][n1];dp[0][1]1;for(inti1;im;i){for(intj1;jn;j){dp[i][j]dp[i-1][j]dp[i][j-1];}}returndp[m][n];}}不同路径||题目解析从起点到终点有多少种路径每次只可以向下或向右走中间有障碍物不可以走和上题一样只不过这里有了障碍物1.状态表示dp[i][j]表示到(i,j)位置路径数2.状态转移方程当这个位置对应是不是障碍物dp[i][j] dp[i-1][j] dp[i][j-1]3.初始化可以让dp表多创建一行和一列方便初始化dp[0][1] 1 / dp[1][0]14.填表顺序从上到下从左向右5.返回值dp[m][n]classSolution{publicintuniquePathsWithObstacles(int[][]obstacleGrid){intmobstacleGrid.length;intnobstacleGrid[0].length;int[][]dpnewint[m1][n1];dp[1][0]1;for(inti1;im;i){for(intj1;jn;j){//没有障碍物if(obstacleGrid[i-1][j-1]0){dp[i][j]dp[i-1][j]dp[i][j-1];}}}returndp[m][n];}}珠宝的最高价值题目解析从起点到终点中路径中可以拿到最高珠宝价值总和每次只可以向下/向右边走1.状态表示dp[i][j]表示到(i,j)位置所有路径中最高宝珠价值和2.状态转移方程当这个位置对应是不是障碍物dp[i][j] max(dp[i-1][j] dp[i][j-1])frame[i-1][j-1]3.初始化可以让dp表多创建一行和一列方便初始化为04.填表顺序从上到下从左向右5.返回值dp[m][n]classSolution{publicintjewelleryValue(int[][]frame){intmframe.length;intnframe[0].length;int[][]dpnewint[m1][n1];for(inti1;im;i){for(intj1;jn;j){dp[i][j]Math.max(dp[i-1][j],dp[i][j-1])frame[i-1][j-1];}}returndp[m][n];}}下降路径最小和题目解析从第一行到最后一行中路径最小和每次只可以向当前位置左下 / 右下/正下方动态规划1.状态表示dp[i][j]表示到以(i,j)为结尾最小路径和2.状态转移方程dp[i][j] min(dp[i-1][j] , dp[i-1][j] , dp[i-1][j1]) m[i][j]3.初始化多创建一行和两列多的一行初始化为0多的两列初始为∞4.填表顺序从上到下从左向右5.返回值最后一行的最小值classSolution{publicintminFallingPathSum(int[][]matrix){intnmatrix.length;int[][]dpnewint[n1][n2];//初始化for(inti1;in;i){dp[i][0]dp[i][n1]Integer.MAX_VALUE;}for(inti1;in;i){for(intj1;jn;j){dp[i][j]Math.min((Math.min(dp[i-1][j-1],dp[i-1][j])),dp[i-1][j1])matrix[i-1][j-1];}}intretInteger.MAX_VALUE;for(inti1;in;i){retMath.min(dp[n][i],ret);}returnret;}}最小路径和题目解析从左上角到右下角最小路径和每次只可以向下/向右移动动态规划1.状态表示dp[i][j]表示到以(i,j)为结尾最小路径和2.状态转移方程dp[i][j] min(dp[i-1][j] , dp[i-1][j] , dp[i-1][j1]) grid[i][j]3.初始化dp[0][1] dp[1][0] 0,多的一行和一列剩余初始化为∞4.填表顺序从上到下从左向右5.返回值dp[m][n]classSolution{publicintminPathSum(int[][]grid){intmgrid.length;intngrid[0].length;int[][]dpnewint[m1][n1];//第一行for(inti2;im;i){dp[i][0]Integer.MAX_VALUE;}//第一列初始化为最大值for(inti2;in;i){dp[0][i]Integer.MAX_VALUE;}for(inti1;im;i){for(intj1;jn;j){dp[i][j]Math.min(dp[i-1][j],dp[i][j-1])grid[i-1][j-1];}}returndp[m][n];}}地下城游戏题目解析骑士从左上角到右下角拯救公主需要的最小初始血量经过一个位置血量会发生对应变化成功拯救公主骑士的血量 1动态规划1.状态表示dp[i][j]表示到以(i,j)为起点拯救公主最小初始血量2.状态转移方程dp[i][j] min(dp[i-1][j] , dp[i-1][j] ) - dungeon[i][j]3.初始化dp[m][n-1] dp[m-1][n] 1,多的一行和一列剩余初始化为∞4.填表顺序从下到上每一行每一行从右到左5.返回值dp[0][0]classSolution{publicintcalculateMinimumHP(int[][]dungeon){intmdungeon.length;intndungeon[0].length;int[][]dpnewint[m1][n1];//初始化多出来的一行和一列//最后一列for(inti0;im;i){dp[i][n]Integer.MAX_VALUE;}//最后一行for(intj0;jn;j){dp[m][j]Integer.MAX_VALUE;}dp[m][n-1]dp[m-1][n]1;for(intim-1;i0;i--){for(intjn-1;j0;j--){//当前位置向下 / 向右之后血量 1dp[i][j]Math.min(dp[i1][j],dp[i][j1])-dungeon[i][j];//可能这个位置是一个巨大血包(正整数)导致初始为负数dp[i][j]Math.max(1,dp[i][j]);}}returndp[0][0];}}
延伸阅读

更多相关文章

2026/10/3 22:50:58

步进电机驱动与控制:基于DRV8818和PIC18F47K42的微步进方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 22:50:58

Android Camera性能优化全攻略:帧率、Buffer、功耗与实战排障

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/3 23:56:01

从零搭建AI工程:从模型接入到Agent编排的完整实践指南

1. 项目概述:当你说“从零开始做AI工程”的时候,到底在说什么“ai-engineering-from-scratch”这个标题,我第一眼看到的时候其实挺感慨的。市面上讲“从零开始学AI”的文章多到泛滥,但绝大多数要么是教你怎么装个库跑个demo&#…

2026/10/3 23:56:01

Carsim与Simulink联合仿真的车辆换道轨迹规划与跟踪

提起自动驾驶、智能网联汽车方向的课题,只要是涉及车辆运动控制的,几乎绕不开 Carsim 和 MATLAB/Simulink 这对黄金搭档。我之前做过一套基于 Carsim 与 Simulink 联合仿真的车辆换道轨迹规划与轨迹跟踪模型,跑了两个月,踩了不少坑…

2026/10/3 23:56:01

鸿业市政道路软件避坑指南:版本匹配、横断面与土方计算常见问题

简介:针对鸿业市政道路软件用户的常见问题解答文档,内容覆盖软件运行、土方、平面、纵断、横断、交叉口设计及其他模块,面向市政道路设计人员与相关专业学生,帮助解决菜单加载失败、土方计算异常、图面显示错乱等高频问题。压缩包…

2026/10/3 23:56:01

超级多智能体架构实战:DeepAgents编排、MCP工具接入与A2A通信

1. 从单体到集群:为什么我们需要超级多智能体1.1 一个真实的需求场景去年下半年我接手了一个企业内部知识助手的项目,需求听起来不复杂:帮员工查制度文档、走审批流程、生成周报。一开始我用的是单体 Agent 方案,一个模型加一堆工…

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑