在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 12 解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物
时间: 2023-05-20 11:02:15 浏览: 144
有七个格子,前三个是黑棋,最后三个是白棋,每次动一个棋子,异色可以跳过一个,经过一连串的移动,最后变成前三个白棋,后三个黑棋
答案:你可以使用动态规划来解决这个问题。定义一个二维数组 dp,其中 dp[i][j] 表示从左上角到 (i,j) 格子的最大价值。则有状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + grid[i][j]。最后返回 dp[m-1][n-1] 即可。对于输入的样例,最大价值为 12。
阅读全文