一、题目内容

image.png

二、题解

解法1:

思路

动态规划

  • i=0,j=0
    • dp[i][j] = gift[i][j]
  • i=0,j!=0
    • dp[i][j] = dp[i][j-1] + gift[i][j]
  • i!=0,j=0
    • dp[i][j] = dp[i-1][j] + gift[i][j]
  • i!=0,j!=0
    • dp[i][j] = Max{ dp[i][j-1] , dp[i-1][j] } + gift[i][j]

image.png

代码

  1. class Solution {
  2. public int maxValue(int[][] grid) {
  3. int m = grid.length;
  4. int n = grid[0].length;
  5. for (int i = 0; i < m; i++) {
  6. for (int j = 0; j < n; j++) {
  7. if (i == 0 && j == 0) {
  8. continue;
  9. }
  10. if (i == 0) {
  11. grid[i][j] += grid[i][j - 1];
  12. } else if (j == 0) {
  13. grid[i][j] += grid[i - 1][j];
  14. } else {
  15. // i!=0 j!=0
  16. grid[i][j] = Math.max(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];
  17. }
  18. }
  19. }
  20. return grid[m - 1][n - 1];
  21. }
  22. }