Unique Paths II问题及解法

来源:互联网 发布:甲骨文广播铃声软件 编辑:程序博客网 时间:2024/06/13 20:41

问题描述:

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 1 and 0 respectively in the grid.

示例:

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.


问题分析:

还是利用动态规划求解,求解思路与UniquePaths类似,这里不多赘述。


过程详见代码:

class Solution {public:    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {        if (obstacleGrid[0][0] == 1 || obstacleGrid.back().back() == 1) return 0;for (int i = 0; i < obstacleGrid.size(); i++){for (int j = 0; j < obstacleGrid[0].size(); j++){if (i == 0 && j == 0) obstacleGrid[i][j] = 1;else{if (obstacleGrid[i][j] == 1) obstacleGrid[i][j] = -1;if (obstacleGrid[i][j] != -1){if (i >= 1 && obstacleGrid[i - 1][j] != -1) obstacleGrid[i][j] += obstacleGrid[i - 1][j];if (j >= 1 && obstacleGrid[i][j - 1] != -1) obstacleGrid[i][j] += obstacleGrid[i][j - 1];}}}}return obstacleGrid.back().back();    }};