go + 动态规划
- 先初始化dp数组 第一行、第一列 以及 dp[0][0] = matrix[0][0]
- 转移方程为: dp[i][j] = min(dp[i-1][j] , dp[i][j-1]) + matrix[i][j]
- 结果为 dp[rows-1][cols-1]
func minPathSum( matrix [][]int ) int {
// write code here
if len(matrix) == 0 {
return 0
}
rows := len(matrix)
cols := len(matrix[0])
dp := make([][]int, rows)
for i:=0; i< rows; i++{
dp[i] = make([]int, cols)
}
dp[0][0] = matrix[0][0]
for i:=1; i< rows; i++{
dp[i][0] = dp[i-1][0] + matrix[i][0]
}
for i:=1; i< cols; i++{
dp[0][i] = dp[0][i-1] + matrix[0][i]
}
for i:=1; i< rows; i++{
for j:=1; j< cols; j++{
if dp[i-1][j] > dp[i][j-1] {
dp[i][j] = matrix[i][j] + dp[i][j-1]
}else{
dp[i][j] = matrix[i][j] + dp[i-1][j]
}
}
}
return dp[rows-1][cols-1]
}
京公网安备 11010502036488号