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 {
public int minPathSum(int[][] grid) {
if(grid==null||grid.length==0||grid[0].length==0)
{
return 0;
}
int ROW=grid.length;
int COL=grid[0].length;
int [][]DISTANCE=new int[ROW][COL];
int row,col;
DISTANCE[0][0]=grid[0][0];
for(col=1;col<COL;col++)
{
DISTANCE[0][col]=DISTANCE[0][col-1]+grid[0][col];
}
for(row=1;row<ROW;row++)
{
DISTANCE[row][0]=DISTANCE[row-1][0]+grid[row][0];
}
for(col=1;col<COL;col++)
{
for(row=1;row<ROW;row++)
{
DISTANCE[row][col]=Math.min( DISTANCE[row-1][col], DISTANCE[row][col-1])+grid[row][col];
}
}
return DISTANCE[ROW-1][COL-1];
}
}原文地址:http://blog.csdn.net/jiewuyou/article/details/39225385