当前位置:网站首页>【动态规划】三角形最小路径和
【动态规划】三角形最小路径和
2022-04-23 06:11:00 【小风_】
链接 https://leetcode-cn.com/problems/triangle/
给定一个三角形 triangle ,找出自顶向下的最小路径和。
每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。
定义: d p [ i ] [ j ] dp[i][j] dp[i][j]表示从索引号 ( 0 , 0 ) (0,0) (0,0)到索引号 ( i , j ) (i,j) (i,j)的最小路径和
边界: d p [ 0 ] [ 0 ] = t r i a n g l e [ 0 ] [ 0 ] dp[0][0]=triangle[0][0] dp[0][0]=triangle[0][0]
状态转移方程: d p [ i ] [ j ] = { m i n ( d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − 1 ] ) , j ≠ 0 o r i d p [ i − 1 ] [ 0 ] + t r i a n g l e [ i ] [ j ] , j = 0 d p [ i − 1 ] [ i − 1 ] + t r i a n g l e [ i ] [ j ] , j = i dp[i][j]= \begin{cases} min(dp[i-1][j],dp[i-1][j-1]), &j≠0~or~i \\ dp[i-1][0]~~~~~~~~+~~~triangle[i][j], &j=0 \\ dp[i-1][i-1]~~+~~~triangle[i][j], &j=i \end{cases} dp[i][j]=⎩⎪⎨⎪⎧min(dp[i−1][j],dp[i−1][j−1]),dp[i−1][0] + triangle[i][j],dp[i−1][i−1] + triangle[i][j],j=0 or ij=0j=i
说明:当前的最小值,等于上一行左右两列的最小加上当前值
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
'''动态规划'''
''' 自顶向下: dp[i][j] = min(dp[i-1][j],dp[i-1][j-1]) + triangle[i][j] j != 0 or i dp[i][j] = dp[i-1][0] + triangle[i][j] j == 0 dp[i][j] = dp[i-1][i-1] + triangle[i][j] j == i '''
lens = len(triangle)
dp = [[0]*lens for _ in range(lens)]
dp[0][0] = triangle[0][0]
'''自顶向下'''
for i in range(1,lens): #假设有5层,那么i是1到4
for j in range(i+1): #j是0到i
if j == 0:
dp[i][j] = dp[i-1][0] + triangle[i][j]
elif j == i:
dp[i][j] = dp[i-1][i-1] + triangle[i][j]
else:
dp[i][j] = min(dp[i-1][j-1],dp[i-1][j]) + triangle[i][j]
ans = dp[lens-1][0]
for num in dp[lens-1]:
ans = min(ans,num)
return ans
版权声明
本文为[小风_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_33952811/article/details/119000035
边栏推荐
- [多屏互动] 实现双多屏异显二:startActivity方式
- Ffmpeg common commands
- error 403 In most cases, you or one of your dependencies are requesting解决
- 组件化学习(2)Arouter原理学习
- 三种实现ImageView以自身中心为原点旋转的方法
- 个人博客网站搭建
- Migrating your native/mobile application to Unified Plan/WebRTC 1.0 API
- 最简单完整的libwebsockets的例子
- 微信小程序 使用wxml2canvas插件生成图片部分问题记录
- MySQL5.7插入中文数据,报错:`Incorrect string value: ‘\xB8\xDF\xAE\xF9\x80 at row 1`
猜你喜欢

ArcGIS License Server Administrator 无法启动解决方法

GEE配置本地开发环境

【2021年新书推荐】Enterprise Application Development with C# 9 and .NET 5

Itop4412 HDMI display (4.0.3_r1)

Record WebView shows another empty pit
![Android interview Online Economic encyclopedia [constantly updating...]](/img/48/dd1abec83ec0db7d68812f5fa9dcfc.png)
Android interview Online Economic encyclopedia [constantly updating...]

WebView displays a blank due to a certificate problem

What did you do during the internship

个人博客网站搭建

【2021年新书推荐】Effortless App Development with Oracle Visual Builder
随机推荐
npm ERR code 500解决
给女朋友写个微信双开小工具
[sm8150] [pixel4] LCD driver
c语言编写一个猜数字游戏编写
Recyclerview batch update view: notifyitemrangeinserted, notifyitemrangeremoved, notifyitemrangechanged
Android-Room数据库快速上手
SSL/TLS应用示例
MySQL笔记1_数据库
MarkDown基础语法笔记
最简单完整的libwebsockets的例子
MySQL notes 5_ Operation data
Itop4412 LCD backlight drive (PWM)
組件化學習
What did you do during the internship
Android interview Online Economic encyclopedia [constantly updating...]
项目,怎么打包
【2021年新书推荐】Enterprise Application Development with C# 9 and .NET 5
js时间获取本周一、周日,判断时间是今天,今天前、后
DCMTK (dcm4che) works together with dicoogle
iTOP4412 HDMI显示(4.0.3_r1)