题目描述

解题思路
- 本题考查动态规划
- 首先构造一个和原数组维度一摸一样的全零数组dp
- dp的值首先将第一行和第一列构造为原数组向右、向下的价值和
- 然后使用for循环遍历填写剩余的dp值
- 方程dp[i][j]=grid[i][j] + Math.max(dp[i][j-1],dp[i-1][j])
实现代码
var maxValue = function(grid) {
const dp = [];
const rowNum = grid.length;
const cowNum = grid[0].length;
for (let i = 0; i < rowNum;i++) {
dp[i] = [];
for (let j = 0;j < cowNum;j++) {
dp[i][j] = 0;
}
}
dp[0][0] = grid[0][0];
for (let i = 1; i < rowNum;i++) {
dp[i][0] = grid[i][0] + dp[i-1][0];
}
for (let j = 1; j < cowNum;j++) {
dp[0][j] = grid[0][j] + dp[0][j-1]
}
for (let i = 1; i < rowNum;i++) {
for (let j = 1;j < cowNum;j++) {
dp[i][j] = grid[i][j] + Math.max(dp[i-1][j],dp[i][j-1]);
}
}
return dp[rowNum-1][cowNum-1]
};
```