day39 动态规划part02 ● 62.不同路径 ● 63. 不同路径 II

day39 动态规划part02 ● 62.不同路径 ● 63. 不同路径 II_第1张图片day39 动态规划part02 ● 62.不同路径 ● 63. 不同路径 II_第2张图片

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector> dp(m+1,vector (n+1,0));
        for(int i=0;i

可以转化为m+n-2中选取m-1或者n-1的组合数,要注意不要溢出。

day39 动态规划part02 ● 62.不同路径 ● 63. 不同路径 II_第3张图片

day39 动态规划part02 ● 62.不同路径 ● 63. 不同路径 II_第4张图片 

class Solution {
public:
    int uniquePathsWithObstacles(vector>& obstacleGrid) {
        vector > dp(obstacleGrid.size(),vector (obstacleGrid[0].size(),0));
        for(int i=0;i

 如果第一行的中间有1,第一行的1后面也无法达到。

可以在开头特判。

if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) //如果在起点或终点出现了障碍,直接返回0
            return 0

注意可以滚动数组,节省使用的空间。 

你可能感兴趣的:(动态规划,算法)