动态编程m * n网格最短的sumpath

时间:2017-07-14 11:10:05

标签: algorithm data-structures

我正在学习一些算法和DS,并遇到了DP问题。寻找一些提示。以下是声明:

  

给定mxn网格填充非负数,找到从左上角到右下角的路径,这样可以最小化路径上所有数字的总和。

     

注意:您只能在任何时间点向下或向右移动。

提示只是请!

我已经想到了一些事情,但他们只是没有工作。它没有意义,因为我最初的想法是,

用dp [i] [j]进行记忆,其中dp [i] [j]是i * j网格的最小路径和。这没有意义,因为我不知道如何从中做到[i + 1] [j + 1]。

这个想法是否正确。你能提出什么建议吗?

1 个答案:

答案 0 :(得分:1)

初始化角单元格,即dp[0][j]dp[i][0]。然后对于任何dp[i][j],遍历该路径的成本将为val[i][j] + min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1])

dp[row][col]应该有最小路径的费用。您也可以使用dp[][]回溯并找到最低费用路径。

祝你好运。