路径规划02

路径规划02

在路径规划01中加一个障碍物

63. 不同路径 II

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
         int m=obstacleGrid.size();
         int n=obstacleGrid[0].size();
         int a[m][n];
         for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                a[i][j]=0;
            }
        }
        //也可使用memset(a,0,sizeof(a))来全初始化为0;
        if(!obstacleGrid[0][0])
            a[0][0]=1;
        //迭代方程:a[m][n]=a[m-1][n]+a[m][n-1];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(!obstacleGrid[i][j]){
                    if(i>0 && j>0){
                        a[i][j]=a[i-1][j]+a[i][j-1];
                    }else if(i>0){
                        a[i][j]=a[i-1][j];
                    }else if(j>0){
                        a[i][j]=a[i][j-1];
                    }
                }
                
            }
        }   
        return a[m-1][n-1];
    }
};
迭代方程:a[m][n]=a[m-1][n]+a[m][n-1];
迭代方向:右和下,有障碍不行
边界情况:上边缘,左边缘
posted @ 2021-11-25 20:24  秋月桐  阅读(29)  评论(0编辑  收藏  举报