繁体   English   中英

找到最小成本路径 javascript

[英]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) 的最小成本路径是多少?

图片1

下图中突出显示了成本最低的路径。 路径为 (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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM