leetcode------Minimum Path Sum

标题: Minimum Path Sum
通过率: 31.7%
难度: 中等

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.

前边做了一个类似的,跳格子,只能向右或者向下走,也就是动态规划了,在过渡一下就跟最短路径一样了。

本题的动态规划就是每一步的上一步一定是从上边或者左边来的,那么距离的累加就是F(i,j)=min(f(i-1,j),F(i,j-1))

有个小的地方就是先把第一行和第一列先累加起来,那么处理起来就是从第(1,1)位置开始计算,这样就不用去考虑边界的问题

代码如下:

 1 public class Solution {
 2     public int minPathSum(int[][] grid) {
 3         int m=grid.length,n=grid[0].length;
 4         for(int i=1;i<m;i++){
 5             grid[i][0]+=grid[i-1][0];
 6         }
 7         for(int j=1;j<n;j++){
 8             grid[0][j]+=grid[0][j-1];
 9         }
10         for(int i=1;i<m;i++){
11             for(int j=1;j<n;j++){
12                 grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);
13             }
14         }
15         return grid[m-1][n-1];
16     }
17 }
原文地址:https://www.cnblogs.com/pkuYang/p/4317613.html