【题目】
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.
这道题和上两题还是很相似的。一个m*n的网格,里面填有正数,找一条从左上到右下的路径,使路径上的数字和最小(只能向下和向右移动)。这题还是用动态规划解答。
【代码】
public int minPathSum(int[][] grid) {
int m=grid.length;
int n=grid[0].length;
for(int i=m-2;i>=0;i--){
grid[i][n-1]+=grid[i+1][n-1];
}
for(int i=n-2;i>=0;i--){
grid[m-1][i]+=grid[m-1][i+1];
}
for(int i=m-2;i>=0;i--){
for(int j=n-2;j>=0;j--){
grid[i][j]=grid[i][j]+Math.min(grid[i][j+1],grid[i+1][j]);
}
}
return grid[0][0];
}