【动态规划】minimum-path-sum

来源:互联网 发布:bandicam mac版 编辑:程序博客网 时间:2024/06/05 15:51

题目描述:

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.


我的代码:

public class Solution {/** * 从二维数组的左上角到右下角的最短路径--动态规划 * @param grid 二维数组 * @return 返回最短路径 */    public int minPathSum(int[][] grid) {    //获取二维数组的m和n,其中m是行数,n是列数        int m = grid.length;int n = grid[0].length;//定义一个数组,用来存储到每个点的最短路径int[][] dp = new int[m][n];//如果是到达第一行的某个点,没有其他走法,只能横着走int sum = 0;for(int i = 0;i<n;i++){sum+=grid[0][i];dp[0][i] = sum;}        sum = 0;        //如果是到达第一列的某个点,没有其他走法,只能竖着走for(int i = 0;i<m;i++){sum+=grid[i][0];dp[i][0] = sum;}//动态规划求到某个点的最短路径for(int i = 1;i<m;i++){for(int j = 1;j<n;j++){dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j];}}//返回到右下角的最短路径return dp[m-1][n-1];    }}


0 0