当前位置:网站首页>【动态规划】三角形最小路径和
【动态规划】三角形最小路径和
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
边栏推荐
- Binder mechanism principle
- 如何对多维矩阵进行标准化(基于numpy)
- 接口幂等性问题
- iTOP4412 SurfaceFlinger(4.0.3_r1)
- Viewpager2 realizes Gallery effect. After notifydatasetchanged, pagetransformer displays abnormal interface deformation
- Explore how @ modelandview can forward data and pages through the source code
- Cancel remote dependency and use local dependency
- Android清除应用缓存
- Component based learning (3) path and group annotations in arouter
- 组件化学习
猜你喜欢
![[2021 book recommendation] kubernetes in production best practices](/img/78/2b5bf03adad5da9a109ea5d4e56b18.png)
[2021 book recommendation] kubernetes in production best practices

this. getOptions is not a function

Easyui combobox 判断输入项是否存在于下拉列表中

Component learning (2) arouter principle learning

C connection of new world Internet of things cloud platform (simple understanding version)

Explore how @ modelandview can forward data and pages through the source code

微信小程序 使用wxml2canvas插件生成图片部分问题记录

实习做了啥

./gradlew: Permission denied

Bottomsheetdialogfragment conflicts with listview recyclerview Scrollview sliding
随机推荐
HandlerThread原理和实际应用
组件化学习(3)ARouter中的Path和Group注解
[recommendation of new books in 2021] practical IOT hacking
error 403 In most cases, you or one of your dependencies are requesting解决
Fill the network gap
adb shell 常用命令
Tiny4412 HDMI display
iTOP4412 FramebufferNativeWindow(4.0.3_r1)
Cause: dx.jar is missing
Handler进阶之sendMessage原理探索
AVD Pixel_ 2_ API_ 24 is already running. If that is not the case, delete the files at C:\Users\admi
[2021 book recommendation] learn winui 3.0
Android暴露组件——被忽略的组件安全
Component learning
Exploration of SendMessage principle of advanced handler
Itop4412 HDMI display (4.4.4_r1)
Android清除应用缓存
Component learning (2) arouter principle learning
Record WebView shows another empty pit
org. xml. sax. SAXParseException; lineNumber: 141; columnNumber: 252; cvc-complex-type. 2.4. a: Found element 'B