1 package solution34;
 2 
 3 class Solution {
 4     public int solution(int[][] m) {
 5         int row = m.length;
 6         int column = m[0].length;
 7         int[][] dp = new int[row][column];
 8         dp[0][0] = m[0][0];
 9         for(int j = 1;j < column;j++){
10             dp[0][j] = dp[0][j-1] + m[0][j];
11         } 
12         for(int i=1;i<row;i++){
13             dp[i][0] = dp[i-1][0] + m[i][0];
14         }
15         for(int i=1;i<row;i++){
16             for(int j=1;j<column;j++){
17                 dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + m[i][j];
18             }
19         }
20         return dp[row-1][column-1];
21     }
22 }

算法思路:动态规划。同leetcode64 最小路径和

先计算首行首列的值(累加和),再从[1][1]位置开始,递归计算公式为:min(dp[i-1][j],dp[i][j-1]) + m[i][j]。

posted on 2020-03-04 16:25  Sempron2800+  阅读(201)  评论(0编辑  收藏  举报