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

三角形的最小路径和---二维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; } }
http://www.jsqmd.com/news/860910/

相关文章:

  • 【Outbox 事件驱动 + Canal Binlog 增量订阅】:用户关系模块架构实战详解
  • 如何快速掌握《鸣潮》游戏模组开发:专业逆向工程与AES加密技术完整指南
  • DicomObjects COM -Release Date: 2026-05-18
  • minecraft-ondemand自动化运维:Watchdog容器原理与实现
  • 如何安全提取未知文件:unblob的5大安全防护机制实战指南
  • AALC自动化工具完整指南:如何用智能助手彻底优化《Limbus Company》游戏时间
  • 龙鱼缸设备怎么配不踩坑?灯光+水泵+滤材的搭配清单 - 华旭传媒
  • NCM文件转换终极指南:3步快速解密网易云音乐加密音频
  • 企业AI开发包含哪些内容:从需求分析到交付落地的完整指南 - 华旭传媒
  • MapReduce数据倾斜解决方案
  • gibMacOS终极指南:三步完成macOS组件下载与系统部署
  • 5分钟快速上手!网易云无损音乐下载完整指南:免费获取高品质音乐
  • Tunasync多数据库后端支持:Bolt、Badger、Redis、LevelDB对比分析
  • Magma高可用部署:如何构建企业级可靠网络基础设施
  • 重庆白发养黑理疗机构哪家好?黑奥秘牵头制定行业标准,专业服务更规范 - 美业信息观察
  • 【卷卷观察】Google I/O 2026 炸场:AI 不再跟你聊天了,它开始替你干活了
  • 3步搞定B站直播助手:新手主播的智能场控终极指南
  • 如何快速获取精准歌词?LDDC 跨平台歌词下载工具完整指南
  • TextShot快速入门:5分钟学会跨平台截图文字识别
  • Elog多平台支持对比:语雀、Notion、FlowUs、飞书哪个更适合你
  • 如何快速搭建家庭游戏串流服务器:Sunshine完整配置教程
  • Obsidian Full Calendar:在笔记中实现高效日程管理的完整指南
  • 瑞士ZuriQ研发新型彭宁离子阱处理器,大幅增强离子阱量子计算机计算能力
  • parse库自定义类型转换器开发指南:从简单函数到复杂模式匹配
  • Spark 安装与使用完全指南【保姆级教程】
  • 如何构建企业级无人机应用:DJI Android SDK V5架构设计与实战指南
  • 2026佛山搬家公司全攻略 大型工厂整体搬迁极简流程 - 从来都是英雄出少年
  • Navicat Premium Mac重置终极方案:3分钟恢复14天试用期
  • LLPlayer:终极语言学习视频播放器 - 用AI技术革新你的外语学习方式
  • 西安正规高三补习学校TOP5推荐:基于口碑与教学质量全解析 - 科技焦点