编辑代码

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)