LeetCode Unique Paths II
2014-03-14 19:56
459 查看
class Solution { public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { vector<vector<int> >& dp = obstacleGrid; if (dp.empty() || dp[0].empty()) return 0; dp[0][0] = (dp[0][0] == 1) ? 0 : 1; for (int i=1; i<dp.size(); i++) { dp[i][0] = (dp[i][0] == 1) ? 0 : dp[i-1][0]; } for (int i=1; i<dp[0].size(); i++) { dp[0][i] = (dp[0][i] == 1) ? 0 : dp[0][i-1]; } for (int i=1; i<dp.size(); i++) { for (int j=1; j<dp[i].size(); j++) { dp[i][j] = (dp[i][j] == 1) ? 0 : dp[i-1][j] + dp[i][j-1]; } } return dp.back().back(); } };
和Unique Paths一样只不过这回不太能用公式直接得出了,在动态规划时依据提供的障碍信息确定如何选取子问题的解,方便起见直接将入参用作dp数组
第二轮:
Follow up for "Unique Paths":
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as
1and
0respectively in the grid.
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[ [0,0,0], [0,1,0], [0,0,0] ]
The total number of unique paths is
2.
Note: m and n will be at most 100.
如果当前位置有障碍那么该处的dp数组元素直接为0,其余和unique path一样
class Solution { public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { int m = obstacleGrid.size(); if (m < 1) return 0; int n = obstacleGrid[0].size(); if (n < 1) return 0; int* dp = new int[n+1]; for (int i=0; i<=n; i++) dp[i] = 0; if (obstacleGrid[0][0] != 1) dp[1] = 1; for (int i=0; i<m; i++) { for (int j=1; j<=n; j++) { if (obstacleGrid[i][j-1] != 1) { dp[j] = dp[j] + dp[j-1]; } else { dp[j] = 0; } } } return dp ; } };
相关文章推荐
- LeetCode 90 Unique Paths II
- 算法分析与设计——LeetCode Problem.63 Unique Paths II
- leetcode_63题——Unique Paths II(动态规划)
- LeetCode | Unique Paths II(唯一路径II)
- [LeetCode]20. Unique Paths II唯一路径
- LeetCode--No.63--Unique Paths II
- 【leetcode】Unique Paths II(动态规划)
- leetcode_63. Unique Paths II
- [leetcode 63] Unique Paths II
- [LeetCode] Unique Paths、Unique Paths II、Minimum Path Sum
- leetcode -- Unique Paths II
- [Leetcode] Unique Paths II
- Leetcode题集——unique-paths-ii
- leetcode_question_63 Unique Paths II
- Leetcode | Unique Paths I & II
- (leetcode)Unique Paths II
- LeetCode Unique Paths II
- LeetCode63 Unique Paths II
- leetcode 63: Unique Paths II
- Leetcode133: Unique Paths II