题解 | #矩阵的最小路径和#
矩阵的最小路径和
http://www.nowcoder.com/practice/38ae72379d42471db1c537914b06d48e
动态规划
- 设置一个二维表表示从到达的最短路径
- 状态转移方程为
- 初始化的第一行和第一列,然后可以利用状态转移方程进行更新,返回
const [m, n] = readline().split(' ').map(x => ~~x)
const matrix = new Array(m).fill(null)
for(let i = 0 ; i < m ; i++) {
let row = readline().split(' ').map(x => ~~x)
matrix[i] = row
}
function main(matrix, m, n) {
const dp = new Array(m).fill(0).map(() => new Array(n).fill(0))
dp[0][0] = matrix[0][0]
// 初始化第一行和第一列
for(let i = 1 ; i < m ; i++) {
dp[i][0] = dp[i-1][0] + matrix[i][0]
}
for(let i = 1 ; i < n ; i++) {
dp[0][i] = dp[0][i-1] + matrix[0][i]
}
// 进行更新
for(let i = 1 ; i < m ; i++) {
for(let k = 1 ; k < n ; k++) {
dp[i][k] = Math.min(dp[i-1][k], dp[i][k-1]) + matrix[i][k]
}
}
return dp[m-1][n-1]
}
console.log(main(matrix, m, n))