Minimum Path Sum
来源:互联网 发布:互通商城 软件靠谱吗 编辑:程序博客网 时间:2024/06/16 23:41
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
思路:这也是一道DP题,f[m][n]表示点(m,n)的最小和,它可由min{f[m-1][n]+grid[m][n],f[m][n-1]+grid[m][n]}得到,然后注意m=0 || m=1 || n=0 || n=1的临界条件即可。
class Solution {private: vector<vector<int> > f;public: int minPath(int m, int n, vector<vector<int> > &grid) { if (m==0 || n==0) { return 0; } if (f[m][n] != 0) { return f[m][n]; } if (m == 1 && n != 1) { f[m][n] = minPath(m,n-1,grid) + grid[m-1][n-1]; return f[m][n]; } if (m != 1 && n == 1) { f[m][n] = minPath(m-1, n, grid) + grid[m-1][n-1]; return f[m][n]; } if (m == 1 && n == 1) { f[m][n] = grid[m-1][n-1]; return f[m][n]; } int top = minPath(m-1, n, grid); int left = minPath(m, n-1, grid); f[m][n] = ((left <= top) ? left + grid[m-1][n-1] : top + grid[m-1][n-1]); return f[m][n]; } int minPathSum(vector<vector<int> > &grid) { int m = grid.size(),i,j; if (m == 0) { return 0; } int n = grid[0].size(); f.resize(m+1); vector<int> line; for(i=0; i<=m; ++i) { line.clear(); line.resize(n+1); for(j=0; j<=n; ++j) line[j]= 0; f[i]= line; } return minPath(m,n,grid); }};
0 0
- LeetCode: Minimum Path Sum
- LeetCode Minimum Path Sum
- LeetCode : Minimum Path Sum
- [Leetcode] Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- [LeetCode] Minimum Path Sum
- [Leetcode] Minimum Path Sum
- Minimum Path Sum
- [LeetCode]Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- [leetcode]Minimum Path Sum
- Minimum Path Sum
- LeetCode-Minimum Path Sum
- [leetcode] Minimum Path Sum
- 【ThinkingInC++】48、用标准C库中的时间函数生成简单的Time类
- 快速排序
- Android GPS学习
- Java中使用java.util.zip包读取APK中的RSA信息
- Ubuntu下PATH设置
- Minimum Path Sum
- xxxx
- 并行博弈树搜索算法-第1篇 什么是博弈树搜索算法
- C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)
- linux线程实现机制分析----------转自IBM中国开发者社区
- Best Time to Buy and Sell Stock II
- iOS 打电话Demo
- Linux线程学习(一)
- 20140911 N2