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) {
int row = grid.length;
int col = grid[0].length;
int[] G = new int[row];
G[0] = grid[0][0];
// initialize the matrix
for (int p = 1; p< row ; p++) {
G[p] = grid[p][0] + G[p-1];
}
for (int i = 1; i < col; i++) {
G[0] += grid[0][i];
for (int j = 1; j < row; j++) {
G[j] = (Math.min(G[j], G[j-1]))+grid[j][i];
}
}
return G[row-1];
}
}
The main idea in this problem is very similar to Unique Path.
DP problem, one-demension matrix to record the solution of the child problem.