您的位置:首页 > 其它

LeetCode64——Minimum Path Sum

2015-11-02 10:08 519 查看
LeetCode64——Minimum Path Sum

LeetCode63——Unique Path II 类似的动态规划

动归方程:

dp[i][j]还是表示到点(i,j)处,最小的路径和,那么这个路径和要怎么求?

由于可以从两个方向到到达dp[i][j]这个点,所以我们取这两个方向的较小值加上点(i,j)处的权值,即可得到dp[i][j]处的权值的总和

那么有:

dp[i][j] = min { dp[i-1][j] , dp[i][j-1] } + value [i][j]

最后也是要注意 边界条件

代码:

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));
		if (m == 0 || n == 0)
			return 0;
		dp[0][0]=grid[0][0];
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (i >= 1 && j >= 1)
					dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
				else if (i>=1)//边界条件
					dp[i][j] = dp[i-1][j]+ grid[i][j];
				else if (j >= 1)//边界条件
					dp[i][j] = dp[i][j-1] + grid[i][j];
			}
		}
		return dp[m - 1][n - 1];
	}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: