/****************************
   Name:  Minimum Path Sum
   Date: 02/02/2016
   Author: Hualin Li
   Description: This is the Minimum Path Sum in the C++. 还是DP大法
   做题感想:这道题放在平时很吓人,细想之下已经想到很多可能,似乎不可能用人脑解决。其实套用了
   DP的方法一切都简单了。
   同样的,只需要记住考虑一维情况下如何处理,顺便写出DP方程就解决问题了。
   
   PS:这次又是差一点做到写code调试一气呵成。可能是之前的DP题目都有点相似吧,呵呵。
   
*****************************/
class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
     //If grid is empty
     if(grid.empty()||grid[0].empty())
     return 0;
     //To get vector size
	 int m=grid.size();
	 int n=grid[0].size();
	 //To initialize them
	 int dp[m][n];
	 dp[0][0]=grid[0][0];
	 
	 //For the 1-D case
	 for(int i=1;i<n;i++)
		dp[0][i]=dp[0][i-1]+grid[0][i];
	
	 for(int j=1;j<m;j++)
		dp[j][0]=dp[j-1][0]+grid[j][0];
	
     //For the dp equation
	 for(int l=1;l<m;l++)
	 {
		 for(int k=1;k<n;k++)
		 {
			 dp[l][k]=min(dp[l-1][k],dp[l][k-1])+grid[l][k];
		 }		
	 }
	 
	 return dp[m-1][n-1];
    }
};
  
回到主页 回到目录