题解 | #最小体重积#
最小体重积
https://www.nowcoder.com/practice/0980f806727e48f3b0253243416038c0
- 题目考察的知识点 : 动态规划
- 题目解答方法的文字分析:
- 我们定义一个二维数组 dp,其中 dp[i][j] 表示从左上角到达坐标 (i,j) 的路径上所有奶牛的重积的最小值。对于每个位置 (i,j),我们有四个方向可以选择,分别是往上、往下、往左和往右
- 得出状态转移方程 dp[i][j]=min{dp[i−1][j],dp[i+1][j],dp[i][j−1],dp[i][j+1]}×cows[i][j]
- 最终答案即为 dp[m−1][n−1],其中 m 和 n 分别表示网格的行数和列数
- 本题解析所用的编程语言: Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param cows int整型二维数组 # @return long长整型 # class Solution: def minPathProduct(self, cows: List[List[int]]) -> int: m, n = len(cows), len(cows[0]) if m == 0 or n == 0: return 0 dp = [[0] * n for _ in range(m)] dp[0][0] = cows[0][0] for i in range(m): for j in range(n): if i > 0 and j > 0: dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) * cows[i][j] elif i > 0: dp[i][j] = dp[i - 1][j] * cows[i][j] elif j > 0: dp[i][j] = dp[i][j - 1] * cows[i][j] return dp[m - 1][n - 1]
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路