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.
这是个典型的dp问题,先初始化第一行,第一列,因为这两行的点如果到达,那只有一个走法,要不一直往右走,要不一直往下走。
而其他的点确可以有2种走法,那么。。又是2种的问题,要么下要么右,不用dp就是等抽
public int minPathSum(int[][] grid) {
if(grid.length==0) return 0;
int numOfRow=grid.length;
int numOfCol=grid[0].length;
for(int col=1;col<numOfCol;col++){
grid[0][col]=grid[0][col-1]+grid[0][col];
}
for(int row=1;row<numOfRow;row++){
grid[row][0]=grid[row-1][0]+grid[row][0];
}
for(int row=1;row<numOfRow;row++){
for(int col=1;col<numOfCol;col++){
grid[row][col]=grid[row][col]+Math.min(grid[row-1][col],grid[row][col-1]);
}
}
return grid[numOfRow-1][numOfCol-1];
}