931 下降路徑最小和 M

2021-09-25 22:56:31 字數 1536 閱讀 2698

label: dp,棋盤型吧

給定乙個方形整數陣列 a,我們想要得到通過 a 的下降路徑的最小和。

下降路徑可以從第一行中的任何元素開始,並從每一行中選擇乙個元素。在下一行選擇的元素和當前行所選元素最多相隔一列。

示例:輸入:[[1,2,3],[4,5,6],[7,8,9]]

輸出:12

解釋:可能的下降路徑有:

[1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9]

[2,4,7], [2,4,8], [2,5,7], [2,5,8], [2,5,9], [2,6,8], [2,6,9]

[3,5,7], [3,5,8], [3,5,9], [3,6,8], [3,6,9]

和最小的下降路徑是 [1,4,7],所以答案是 12。

1 <= a.length == a[0].length <= 100

-100 <= a[i][j] <= 100

分析:這道題很容易分析轉移方程,應該放在easy部分,dp[i][j]表示經歷0->i-1到dp[i][j]路徑上的最小和,轉移方程為:

d p[

i][j

]=mi

ndp[

i−1]

[j−1

],dp

[i−1

][j]

,dp[

i−1]

[j+1

]+a[

i][j

]dp[i][j]=min+a[i][j]

dp[i][

j]=m

indp

[i−1

][j−

1],d

p[i−

1][j

],dp

[i−1

][j+

1]+a

[i][

j]

package main

import

("fmt"

"math")/*

執行用時 :20 ms, 在所有 go 提交中擊敗了58.33%的使用者

記憶體消耗 :5.7 mb, 在所有 go 提交中擊敗了57.14%的使用者

*/func

minfallingpathsum

(a [

]int

)int

for i:=

0;i1;i++

for i:=

1;i<=size;i++

if dp[i]

[j]>dp[i-1]

[j+1

] dp[i]

[j]+=a[i-1]

[j-1]}

} min:=dp[size][1

]for i:=

2;i<=size;i++

}return min

}func

main()

,,},

//12,}

,//-59

}for

_,v:=

range tables

}

leetcode 931 下降路徑最小和

leetcode70 爬樓梯 leetcode96 不同的二叉搜尋樹 leetcode120 三角形最小路徑和 leetcode931 下降路徑最小和 1.題目 給定乙個方形整數陣列 a,我們想要得到通過 a 的下降路徑的最小和。下降路徑可以從第一行中的任何元素開始,並從每一行中選擇乙個元素。在下一...

LeetCode 931 下降路徑最小和 詳解

給定乙個方形整數陣列a,我們想要得到通過a的下降路徑的最小和。下降路徑可以從第一行中的任何元素開始,並從每一行中選擇乙個元素。在下一行選擇的元素和當前行所選元素最多相隔一列。示例 輸入 1,2,3 4,5,6 7,8,9 輸出 12解釋 可能的下降路徑有 和最小的下降路徑是 1,4,7 所以答案是1...

下降路徑最小和

給定乙個方形整數陣列 a,我們想要得到通過 a 的下降路徑的最小和。下降路徑可以從第一行中的任何元素開始,並從每一行中選擇乙個元素。在下一行選擇的元素和當前行所選元素最多相隔一列。示例 輸入 1,2,3 4,5,6 7,8,9 輸出 12 解釋 可能的下降路徑有 1,4,7 1,4,8 1,5,7 ...