算法分析与设计丨第十二周丨LeetCode(16)——Minimum Path Sum(Medium)
2017-11-28 20:18
375 查看
动态规划
题目链接:https://leetcode.com/problems/minimum-path-sum/description/
题目描述:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizesthe sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example 1:
Given the above grid map, return
Because the path 1→3→1→1→1 minimizes the sum.
题目解析:今天看了一天的动态规划,才有一点明朗,要加紧刷题了。这是一道典型的动态规划,将问题化为一个个子问题求解。
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int row_num = grid.size();
int col_num = grid[0].size();
vector<vector<int> > temp_map(row_num,vector<int>(col_num,0));
temp_map[0][0] = grid[0][0];
for(int i = 1;i < row_num; ++i)
temp_map[i][0] = grid[i][0] + temp_map[i-1][0];
for(int i = 1;i < col_num; ++i)
temp_map[0][i] = grid[0][i] + temp_map[0][i-1];
for(int i = 1;i < row_num; ++i)
for(int j = 1;j < col_num; ++j)
{
temp_map[i][j] = min(temp_map[i-1][j],temp_map[i][j-1]) + grid[i][j];
//cout<<temp_map[i][j];
}
return temp_map[row_num - 1][col_num - 1];
}
};
题目链接:https://leetcode.com/problems/minimum-path-sum/description/
题目描述:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizesthe sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example 1:
[[1,3,1], [1,5,1], [4,2,1]]
Given the above grid map, return
7.
Because the path 1→3→1→1→1 minimizes the sum.
题目解析:今天看了一天的动态规划,才有一点明朗,要加紧刷题了。这是一道典型的动态规划,将问题化为一个个子问题求解。
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int row_num = grid.size();
int col_num = grid[0].size();
vector<vector<int> > temp_map(row_num,vector<int>(col_num,0));
temp_map[0][0] = grid[0][0];
for(int i = 1;i < row_num; ++i)
temp_map[i][0] = grid[i][0] + temp_map[i-1][0];
for(int i = 1;i < col_num; ++i)
temp_map[0][i] = grid[0][i] + temp_map[0][i-1];
for(int i = 1;i < row_num; ++i)
for(int j = 1;j < col_num; ++j)
{
temp_map[i][j] = min(temp_map[i-1][j],temp_map[i][j-1]) + grid[i][j];
//cout<<temp_map[i][j];
}
return temp_map[row_num - 1][col_num - 1];
}
};
相关文章推荐
- 【Leetcode】【Medium】Minimum Path Sum
- 算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
- 算法分析与设计丨第十八周丨LeetCode(21)——Binary Tree Maximum Path Sum(Hard)
- 算法分析与设计丨第八周丨LeetCode(12)——Friend Circles(Medium)
- 算法分析与设计丨第十九周丨LeetCode(22)——House Robber(Medium)
- LeetCode-64-Minimum Path Sum(动态规划)-Medium
- [Leetcode 64, Medium] Minimum Path Sum
- 算法分析与设计丨第九周丨LeetCode(13)——Redundant Connection(Medium)
- 算法分析与设计——LeetCode Problem.64 Minimum Path Sum
- 算法分析与设计丨第二周丨LeetCode(3)——Kth Largest Element in an Array(Medium)
- LeetCode Minimum Path Sum(动态规划)
- leetcode 64 Minimum Path Sum C++
- 【LeetCode】【Python】Minimum Path Sum
- LeetCode 64 Minimum Path Sum(动态规划)
- [LeetCode] Unique Paths、Unique Paths II、Minimum Path Sum
- leetcode之Minimum Path Sum
- LeetCode Minimum Path Sum
- LeetCode: Minimum Path Sum [063]
- Leetcode Minimum Path Sum
- Minimum Path Sum leetcode 64