063 - Unique Paths II

来源:互联网 发布:最新网络流行歌曲 编辑:程序博客网 时间:2024/06/13 00:22

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.

For example,

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.



int uniquePathsWithObstacles(int** grid, int row, int col) {int i, j;if (!row || !col) return 0;for (i = 0; i < col; i++) {grid[0][i] = grid[0][i] ? -1 : 1;if (i && grid[0][i - 1] == -1) grid[0][i] = -1;}for (i = 1; i < row; i++) {grid[i][0] = grid[i][0] ? -1 : 1;if (grid[i - 1][0] == -1) grid[i][0] = -1;}for (i = 1; i < row; i++)for (j = 1; j < col; j++) {if (grid[i][j] == 1) {grid[i][j] = -1;continue;}if (grid[i][j - 1] > 0) grid[i][j] += grid[i][j - 1];if (grid[i - 1][j] > 0) grid[i][j] += grid[i - 1][j];//if (!grid[i][j]) grid[i][j] = -1;}return grid[row - 1][col - 1] > 0 ? grid[row - 1][col - 1] : 0;}


0 0
原创粉丝点击