http://oj.leetcode.com/problems/minimum-path-sum/
// The problem is straightforward, and the question is how to write it in an elegant way
class Solution {
public:
const int INF=100000000;
int GetNum(vector<vector<int>> &dp, int x, int y){
if(x<0||y<0||x>=dp.size()||y>=dp[0].size()) return INF;
else return dp[x][y];
}
int minPathSum(vector<vector<int> > &grid) {
vector<vector<int>> dp;
int row=grid.size(), col=grid[0].size();
for(int i=0;i<row;i++){
vector<int> oneRow;
for(int j=0;j<col;j++){
oneRow.push_back(INF);
}
dp.push_back(oneRow);
}
dp[0][0]=0;
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
dp[i][j]=min(dp[i][j],GetNum(dp,i-1,j));
dp[i][j]=min(dp[i][j],GetNum(dp,i,j-1));
dp[i][j]+=grid[i][j];
}
}
return dp[row-1][col-1];
}
};
本文提供了一种解决LeetCode上最小路径和问题的方法。通过动态规划算法,该方案优雅地解决了寻找矩阵中从左上角到右下角路径最小和的问题。文章详细展示了如何初始化dp数组并迭代更新其值的过程。
369

被折叠的 条评论
为什么被折叠?



