Java 题解 | #最小体重积#
最小体重积
https://www.nowcoder.com/practice/0980f806727e48f3b0253243416038c0
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cows int整型二维数组
* @return long长整型
*/
public long minPathProduct (int[][] cows) {
// write code here
int m = cows.length;
int n = cows[0].length;
long[][] dp = new long[m + 1][n + 1];
for (int i = 0; i <= m; i++) {
Arrays.fill(dp[i], Long.MAX_VALUE);
}
dp[0][1] = 1;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) * cows[i - 1][j - 1];
}
}
return dp[m][n];
}
}
编程语言是Java。
该题考察的知识点:
- 动态规划:通过构建一个二维数组
dp,使用动态规划的思想求解最小路径乘积问题。
代码的简短文字解释:
minPathProduct函数接受一个二维整型数组cows作为参数,表示农场中奶牛每个位置的产量。- 声明一个大小为
m+1行、n+1列的二维长整型数组dp,并将其初始化为 Long 的最大值。 - 将
dp[0][1]设为 1,作为起点。 - 使用两个嵌套循环遍历二维数组
cows,从(1, 1)开始计算每个位置(i, j)对应的最小路径乘积。在每个位置,选择上方(i-1, j)和左方(i, j-1)中较小的路径乘积,再乘以当前位置的值cows[i-1][j-1],得到dp[i][j]。 - 返回
dp[m][n]作为结果。
科大讯飞公司氛围 423人发布
查看11道真题和解析