码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Minimum Path Sum (简单DP)

时间:2015-11-02 22:56:47      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

题意:

  给一个n*m的矩阵,每次可以往下或右走,经过的格子中的数字之和就是答案了,答案最小为多少?

 

 

思路:

  比较水,只是各种空间利用率而已。

  如果可以在原空间上作修改。

技术分享
 1 class Solution {
 2 public:
 3     int minPathSum(vector<vector<int>>& grid) {
 4         int n=grid.size()-1;
 5         int m=grid[n].size()-1;
 6         for(int j=1; j<=m; j++)    
 7             grid[0][j]+=grid[0][j-1];
 8         for(int i=1; i<=n; i++)
 9         {
10             grid[i][0]+=grid[i-1][0];    
11             for(int j=1; j<=m; j++)
12                 grid[i][j]+=min(grid[i-1][j], grid[i][j-1]);
13         }
14         return grid[n][m];
15     }
16 };
AC代码

  

  至少也要用O(m)的空间吧。

技术分享
 1 class Solution {
 2 public:
 3     int minPathSum(vector<vector<int>>& grid) {
 4         vector<int> dp(grid[0].begin(),grid[0].end());
 5         int n=grid.size()-1, m=grid[n].size()-1;
 6         for(int j=1; j<=m; j++)    
 7             dp[j]+=dp[j-1];
 8         for(int i=1; i<=n; i++)
 9         {
10             dp[0]+=grid[i][0];    
11             for(int j=1; j<=m; j++)
12                 dp[j]=grid[i][j]+min(dp[j-1], dp[j]);
13         }
14         return dp[m];
15     }
16 };
AC代码

 

LeetCode Minimum Path Sum (简单DP)

标签:

原文地址:http://www.cnblogs.com/xcw0754/p/4931544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!