题解 | #最小体重积# java

最小体重积

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

import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param cows int整型二维数组
     * @return long长整型
     */
    public long minPathProduct(int[][] cows) {
        // 获取矩阵的行数和列数
        int m = cows.length;
        int n = cows[0].length;

        // 如果矩阵只有一个元素,直接返回该元素的值
        if (m == 1 && n == 1) {
            return cows[0][0];
        }

        // 创建一个二维数组f,用于记录到达每个位置的最小路径乘积
        long[][] f = new long[m][n];

        // 初始化第一行和第一列的路径乘积
        f[0][0] = cows[0][0];
        for (int i = 1; i < m; ++i) {
            f[i][0] = f[i - 1][0] * cows[i][0];
        }
        for (int j = 1; j < n; ++j) {
            f[0][j] = f[0][j - 1] * cows[0][j];
        }

        // 计算到达每个位置的最小路径乘积
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                f[i][j] = Math.min(f[i - 1][j], f[i][j - 1]) * cows[i][j];
            }
        }

        // 返回到达右下角位置的最小路径乘积
        return f[m - 1][n - 1];
    }
}

该代码使用的编程语言是Java。

它考察了动态规划的知识点。

下面是代码的文字解释大纲:

  1. 定义了一个名为Solution的类。
  2. 在类中,声明了一个公有的长整型方法minPathProduct,该方法接受一个二维整型向量cows作为参数,并返回一个长整型值。
  3. 方法内部,先获取二维向量cows的行数m和列数n
  4. 如果mn都为1,则直接返回cows中唯一的元素。
  5. 创建一个二维向量f,用于记录到达每个位置的最小路径乘积,初始化为全0。
  6. 对于第一行和第一列的元素,最小路径乘积等于前一个位置的最小路径乘积乘以当前位置的值。
  7. 使用动态规划的思想,计算其他位置的最小路径乘积。对于每个位置f[i][j],它的最小路径乘积等于上方位置f[i-1][j]和左方位置f[i][j-1]中较小的乘积再乘以当前位置的值。
  8. 返回右下角位置f[m-1][n-1]的最小路径乘积作为结果。
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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