[英]Find minimum cost path javascript
给定成本矩阵 cost[][] 和 cost[][] 中的 position (m, n),编写一个 function 返回从 (0, 0) 到达 (m, n) 的最小成本路径的成本。 矩阵的每个单元格代表遍历该单元格的成本。 到达路径的总成本 (m, n) 是该路径上所有成本的总和(包括源和目的地)。 您只能从给定单元格向下、向右和对角向下遍历单元格,即从给定单元格 (i, j)、单元格 (i+1, j)、(i, j+1) 和 (i+1) , j+1) 可以遍历。 您可以假设所有成本都是正整数。
例如,在下图中,到 (2, 2) 的最小成本路径是多少?
下图中突出显示了成本最低的路径。 路径为 (0, 0) –> (0, 1) –> (1, 2) –> (2, 2)。 路径的成本是 8 (1 + 2 + 2 + 3)。
function minCost(array, m, n){
let tc = [m+1][n+1]
tc[0][0] == array[0][0]
for (let i = 1; i <= m; i++) {
tc[i][0] = tc[i-1][0] + cost[i][0]
}
for (i = 1; i <= m; i++){
tc[i][0] = tc[i-1][0] + cost[i][0];
}
/* Initialize first row of tc array */
for (j = 1; j <= n; j++){
tc[0][j] = tc[0][j-1] + cost[0][j];
}
/* Construct rest of the tc array */
for (i = 1; i <= m; i++){
for (j = 1; j <= n; j++){
tc[i][j] = min(tc[i-1][j-1],tc[i-1][j], tc[i][j-1]) + cost[i][j];
}
}
return tc[m][n];
}
console.log(minCost([
[1,2,3],
[4,8,2],
[1, 5, 3]
],2,2))
我面临一个解决这个算法问题的问题。 所以我尝试了一些东西,但代码出错了。 谁能确定我的代码中的问题在哪里?
您的代码看起来几乎正确,除了两个问题:
cost
数组,而 function 参数是array
。 到处都用array
替换cost
(但cost
名称要好得多:),所以你可以用cost
替换array
)
删除第二个 for 循环
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.