Unique Paths II
2017-11-03 17:16
288 查看
原题链接: https://leetcode.com/problems/unique-paths-ii/description/
题目描述: 题目在Unique Path这道题目的基础上增加了一个条件,给定一个m*n的障碍矩阵obstacleGrid,当obstacleGrid[i][j]的值为0时,代表方格(i,j)上没有障碍物;为1时代表方格(i, j)上有障碍物,必须绕开这个障碍物。找出从方格(0,0)到(m-1, n-1)的所有路径的数量。
Solution: 采用动态规划的方法,用path[i][j]表示从方格(0,0)到(i, j)的所有路径的数量。对于每一个方格(i, j),到达此方格的路径数量应该等于其上方方格(i-1, j)与左边方格(i, j-1)的路径数量之和,因为题目要求只能向右或向下走。依次计算出所有方格的path值,那么path[m-1][n-1]就是问题的解。
该问题的状态转移方程为:
当 i=0, j=0时,若方格(0,0)中有障碍,则path[0][0] = 0;若方格无障碍,则path[0][0] = 1。
当 i > 0 或 j > 0时,若方格(i,j)有障碍,则path[i][j] = 0;若方格无障碍,则path[i][j] = path[i][j-1] + path[i-1][j]。
算法分析: 一共有m*n个方格,所以状态数位m x n,状态迁移的复杂度为O(1),所以总的复杂度为O(m x n)。
题目描述: 题目在Unique Path这道题目的基础上增加了一个条件,给定一个m*n的障碍矩阵obstacleGrid,当obstacleGrid[i][j]的值为0时,代表方格(i,j)上没有障碍物;为1时代表方格(i, j)上有障碍物,必须绕开这个障碍物。找出从方格(0,0)到(m-1, n-1)的所有路径的数量。
Solution: 采用动态规划的方法,用path[i][j]表示从方格(0,0)到(i, j)的所有路径的数量。对于每一个方格(i, j),到达此方格的路径数量应该等于其上方方格(i-1, j)与左边方格(i, j-1)的路径数量之和,因为题目要求只能向右或向下走。依次计算出所有方格的path值,那么path[m-1][n-1]就是问题的解。
该问题的状态转移方程为:
当 i=0, j=0时,若方格(0,0)中有障碍,则path[0][0] = 0;若方格无障碍,则path[0][0] = 1。
当 i > 0 或 j > 0时,若方格(i,j)有障碍,则path[i][j] = 0;若方格无障碍,则path[i][j] = path[i][j-1] + path[i-1][j]。
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(), n = obstacleGrid[0].size(); int unique_path[m] ; memset(unique_path, 0, sizeof(unique_path)); unique_path[0][0] = obstacleGrid[0][0] == 1 ? 0 : 1; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (obstacleGrid[i][j] == 0) { if (i > 0) unique_path[i][j] += unique_path[i-1][j]; if (j > 0) unique_path[i][j] += unique_path[i][j-1]; } } } return unique_path[m-1][n-1]; } };
算法分析: 一共有m*n个方格,所以状态数位m x n,状态迁移的复杂度为O(1),所以总的复杂度为O(m x n)。
相关文章推荐
- leetcode -- Unique Paths I &&II-- 典型DP 题目,简单要看
- Unique Paths II
- leetcode-63 Unique Paths II
- leetcode JAVA Unique Paths II 难度系数3 3.21
- Unique Paths I & II
- LeetCode | Unique Paths II
- Leetcode-Unique Paths II(dp)
- leetcode oj java Unique Paths II
- Unique Paths II
- Leetcode[63]-Unique Paths II
- Unique Paths II
- leetcode Unique Paths & Unique Paths II & Minimum Path Sum
- 开始刷leetcode day60: Unique Paths II
- LeetCode: Unique Paths II
- leetcode:Unique Paths II
- leetcode-Unique Paths II
- Unique Paths II
- LeetCode Unique Paths II
- Leetcode Unique Paths II
- leetcode - Unique Paths II