//方法一:dp,不优化空间 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)); for(int i=0; i<m; i++) for(int j=0; j<n; j++) { if(i==0) { if(j==0) dp[i][j] = grid[i][j]; else dp[i][j] = dp[i][j-1] + grid[i][j]; } else if(j==0) { dp[i][j] = dp[i-1][j] + grid[i][j]; } else dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]; } return dp[m-1][n-1]; } };
//方法二:dp,优化空间 class Solution { public: int minPathSum(vector<vector<int> > &grid) { int m = grid.size(); int n = grid[0].size(); vector<int> dp(n); for(int i=0; i<m; i++) for(int j=0; j<n; j++) { if(i==0) { if(j==0) dp[j] = grid[i][j]; else dp[j] = dp[j-1] + grid[i][j]; } else if(j==0) { dp[j] = dp[j] + grid[i][j]; } else dp[j] = min(dp[j], dp[j-1]) + grid[i][j]; } return dp[n-1]; } };
原文地址:http://blog.csdn.net/keyyuanxin/article/details/45278861