news 2026/5/21 23:43:43

三角形的最小路径和---二维dp

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三角形的最小路径和---二维dp

这是一道非常经典的题目;

首先我们回顾一下如何得到dp的定义和dp的式子。

首先我们要明白动态规划的宗旨,动态规划是将大问题拆分成一个一个小问题,然后将小问题的答案记录下来,这时候我们应该可以定义出小问题的含义也就是dp[i]其中的i和dp代表什么。

然后我们需要推理大问题如何由小问题得到,这时候状态转移方程就产生了。

思路:拿到这道题没什么思路 我觉得dp[i][j]应该表示的是在当前位置上满足条件的最小的路径之和,

不要不自信,就是这样的。

那么想一下状态转方程应该怎么写,由题意我们知道,当前位置可以由上一行的第i个位置得到,也可以由上一行的第j - 1个位置得到,于是我们可以写出状态转移方程是,dp[i][j] = Math.min(dp[i - 1][j],dp[i - 1][j - 1]) + target[i][j];

写出来状态转移方程之后我们就要考虑边界的问题了

最左边那一列的数只能由上一行的第j个位置得到,最右边那一列的数只能由上一行的第 j- 1个位置得到。

于是我们不难写出代码:

class Solution { public int minimumTotal(List<List<Integer>> triangle) { int n = triangle.size(); int [][] dp = new int[300][300]; dp[0][0] = triangle.get(0).get(0); for(int i = 1;i < n;i++){ for(int j = 0;j <=i;j ++){ if(j == 0){ dp[i][j] = dp[i - 1][0] + triangle.get(i).get(j); } else if(j == i){ dp[i][j] = dp[i - 1][j -1] + triangle.get(i).get(j);//这里最开始写错了 }else{ dp[i][j] = Math.min(dp[i - 1][j - 1],dp[i -1][j]) + triangle.get(i).get(j); } } } int min = Integer.MAX_VALUE; for(int i = 0;i < n;i ++){ //这里不认真也写错了 if(dp[n - 1][i] < min){ min = dp[n - 1][i]; } System.out.println(dp[n - 1][i]); } return min; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 23:37:11

专业级USB启动盘制作工具:Rufus高级功能与实战配置深度解析

专业级USB启动盘制作工具&#xff1a;Rufus高级功能与实战配置深度解析 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus作为一款专业级的USB启动盘制作工具&#xff0c;在系统部署领域拥有无…

作者头像 李华
网站建设 2026/5/21 23:37:08

JetBrains IDE 试用重置终极指南:ide-eval-resetter 完整教程

JetBrains IDE 试用重置终极指南&#xff1a;ide-eval-resetter 完整教程 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为 JetBrains IDE 试用期结束而烦恼吗&#xff1f;ide-eval-resetter 是一款专为开发…

作者头像 李华
网站建设 2026/5/21 23:35:22

铜钟音乐:在喧嚣时代找回纯粹的音乐聆听体验

铜钟音乐&#xff1a;在喧嚣时代找回纯粹的音乐聆听体验 【免费下载链接】tonzhon-music 铜钟 Tonzhon (tonzhon.whamon.com): 干净纯粹的音乐平台 (铜钟已不再使用 tonzhon.com&#xff0c;现在的 tonzhon.com 不是正版的铜钟) 项目地址: https://gitcode.com/GitHub_Trendi…

作者头像 李华
网站建设 2026/5/21 23:34:28

0605光刻机 第六篇:EUV超精密光学系统(S级 长期死磕突破)第5小节:材料+器件自研完整实施方案

第5小节&#xff1a;材料器件自研完整实施方案&#xff08;全链路闭环、分阶段落地、量化验收、可工程化&#xff09;前置硬核声明前面4小节已经彻底拆解&#xff1a;EUV超精密光学的所有卡点集中在ULE基底材料、氟化钙晶体、超精密抛光、Mo/Si多层膜、皮米级检测、系统装调六大…

作者头像 李华
网站建设 2026/5/21 23:32:09

Unity AI Chat Toolkit:5分钟快速构建智能对话应用的终极指南

Unity AI Chat Toolkit&#xff1a;5分钟快速构建智能对话应用的终极指南 【免费下载链接】unity-AI-Chat-Toolkit 使用unity实现AI聊天相关功能。目前这个库包含了对chatgpt、chatglm等大语言模型的api调用的代码实现以及实现了微软Azure以及百度AI的语音服务功能&#xff0c;…

作者头像 李华