class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
int m = grid.size();
int n = grid[0].size();
vector<vector<int> > dp(m, vector<int>(n, -1));
dp[m - 1][n - 1] = grid[m - 1][n - 1];
return minPathSum(grid, dp, 0, 0);
}
int minPathSum(vector<vector<int> > &grid, vector<vector<int> >& dp, int x, int y) {
int down = INT_MAX;
if(x < grid.size() - 1) {
if(dp[x + 1][y] != -1) {
down = dp[x+1][y];
} else {
down = minPathSum(grid, dp, x + 1, y);
}
}
int right = INT_MAX;
if(y < grid[0].size() - 1) {
if(dp[x][y + 1] != -1) {
right = dp[x][y + 1];
} else {
right = minPathSum(grid, dp, x, y + 1);
}
}
if(dp[x][y] == -1) {
dp[x][y] = (right > down ? down : right) + grid[x][y];
}
return dp[x][y];
}
};
4/08/2014
Leetcode -- Minimum Path Sum
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment