我正在学习一些算法和DS,并遇到了DP问题。寻找一些提示。以下是声明:
给定mxn网格填充非负数,找到从左上角到右下角的路径,这样可以最小化路径上所有数字的总和。
注意:您只能在任何时间点向下或向右移动。
提示只是请!
我已经想到了一些事情,但他们只是没有工作。它没有意义,因为我最初的想法是,
用dp [i] [j]进行记忆,其中dp [i] [j]是i * j网格的最小路径和。这没有意义,因为我不知道如何从中做到[i + 1] [j + 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[][]
回溯并找到最低费用路径。