function collectCoin(coin) {
if (!coin || !coin[0]) {
return 0;
}
const rows = coin.length; // 行
const cols = coin[0].length; // 列
// 创建一个二维数组来存储最大硬币数目
const dp = Array.from({ length: rows }, () => Array(cols).fill(0));
// console.log(dp)
// 初始化第一行和第一列
dp[0][0] = coin[0][0];
for (let i = 1; i < rows; i++) {
dp[i][0] = dp[i - 1][0] + coin[i][0];
}
for (let j = 1; j < cols; j++) {
dp[0][j] = dp[0][j - 1] + coin[0][j];
}
// 动态规划计算最大硬币数目
for (let i = 1; i < rows; i++) {
for (let j = 1; j < cols; j++) {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + coin[i][j];
}
}
console.log(dp[rows - 1][cols - 1])
return dp[rows - 1][cols - 1];
}
const arr = [
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0],
[0, 0, 1, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 1, 0, 0, 1],
[0, 1, 0, 0, 0, 1, 0],
]
collectCoin(arr)