前言
###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.网格中的最小路径代价
题目链接:2304. 网格中的最小路径代价 - 力扣(LeetCode)
题面:
附上灵神代码:
class Solution {
public int minPathCost(int[][] grid, int[][] moveCost) {
int m = grid.length, n = grid[0].length;
int[][] memo = new int[m][n];
int ans = Integer.MAX_VALUE;
for (int j = 0; j < n; j++) { // 枚举起点
ans = Math.min(ans, dfs(0, j, memo, grid, moveCost));
}
return ans;
}
private int dfs(int i, int j, int[][] memo, int[][] grid, int[][] moveCost) {
if (i == grid.length - 1) { // 递归边界
return grid[i][j];
}
if (memo[i][j] != 0) { // 之前计算过
return memo[i][j];
}
int res = Integer.MAX_VALUE;
for (int k = 0; k < grid[0].length; k++) { // 移动到下一行的第 k 列
res = Math.min(res, dfs(i + 1, k, memo, grid, moveCost) + moveCost[grid[i][j]][k]);
}
return memo[i][j] = res + grid[i][j]; // 记忆化
}
}
后言
上面是动态规划相关的习题,共勉