题解 | #最小体重积#

最小体重积

https://www.nowcoder.com/practice/0980f806727e48f3b0253243416038c0

  • 题目考察的知识点 : 动态规划
  • 题目解答方法的文字分析:
  1. 我们定义一个二维数组 dp,其中 dp[i][j] 表示从左上角到达坐标 (i,j) 的路径上所有奶牛的重积的最小值。对于每个位置 (i,j),我们有四个方向可以选择,分别是往上、往下、往左和往右
  2. 得出状态转移方程 dp[i][j]=min{dp[i−1][j],dp[i+1][j],dp[i][j−1],dp[i][j+1]}×cows[i][j]
  3. 最终答案即为 dp[m−1][n−1],其中 mn 分别表示网格的行数和列数
  • 本题解析所用的编程语言: 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题的解法思路

全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务