1 class Solution {
2 public int maxValue(int[][] grid) {
3 int m = grid.length;
4 int n = grid[0].length;
5 int[][] dp = new int[m][n];
6 dp[0][0] = grid[0][0];
7 for(int j=1;j<n;j++) {
8 dp[0][j] = grid[0][j] + dp[0][j-1];
9 }
10 for(int i=1;i<m;i++) {
11 dp[i][0] = grid[i][0] + dp[i-1][0];
12 }
13
14 for(int i=1;i<m;i++) {
15 for(int j=1;j<n;j++) {
16 dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]) + grid[i][j];
17 }
18 }
19 return dp[m-1][n-1];
20 }
21 }
思路:动态规划。