本文主要是介绍63. Unique Paths II(Leetcode每日一题-2020.07.06),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem
A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked ‘Finish’ in the diagram below).
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 1 and 0 respectively in the grid.
Note: m and n will be at most 100.
Example
Input:
[
[0,0,0],
[0,1,0],
[0,0,0]
]
Output: 2
Explanation:
There is one obstacle in the middle of the 3x3 grid above.
There are two ways to reach the bottom-right corner:
1.Right -> Right -> Down -> Down
2.Down -> Down -> Right -> Right
Solution
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int ret = 0;if(obstacleGrid.empty())return ret;int m = obstacleGrid.size();int n = obstacleGrid[0].size();vector<vector<int>> dp(m,vector<int>(n,0));dp[0][0] = obstacleGrid[0][0] == 1?0:1;for(int i = 1;i<m;++i){if(obstacleGrid[i][0] == 1)dp[i][0] == 0;elsedp[i][0] = dp[i-1][0];}for(int j = 1;j<n;++j){if(obstacleGrid[0][j] == 1)dp[0][j] == 0;elsedp[0][j] = dp[0][j-1];}for(int i = 1;i<m;++i)for(int j = 1;j<n;++j){if(obstacleGrid[i][j] == 1)dp[i][j] = 0;elsedp[i][j] = dp[i-1][j] + dp[i][j-1];}return dp[m-1][n-1];}
};
这篇关于63. Unique Paths II(Leetcode每日一题-2020.07.06)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!