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 ...