码迷,mamicode.com
首页 > 其他好文 > 详细

Unique Paths II (dp题)

时间:2015-01-16 23:38:32      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

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.

代码:

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
          if(obstacleGrid.size()==0) return 0;
          int row=obstacleGrid.size();
          int col=obstacleGrid[0].size();
          int dp[100][100];
          memset(dp,0,sizeof(dp));
          bool rblockTag=false;
          bool cblockTag=false;
          if(obstacleGrid[0][0]==1||obstacleGrid[row-1][col-1]==1)
            return 0;
          for(int i=1;i<col;++i){
              if(obstacleGrid[0][i]==1) rblockTag=true;
              if(!rblockTag) dp[0][i]=1;
              else dp[0][i]=0;
          }
          for(int j=0;j<row;++j){
              if(obstacleGrid[j][0]==1) cblockTag=true;
              if(!cblockTag) dp[j][0]=1;
              else dp[j][0]=0;
          }
          for(int i=1;i<row;++i){
              for(int j=1;j<col;++j){
                  if(obstacleGrid[i][j]==1) dp[i][j]=0;
                  else dp[i][j]=dp[i][j-1]+dp[i-1][j];//i和j是从1开始
              }
          }
          return dp[row-1][col-1];
      }
};

 

Unique Paths II (dp题)

标签:

原文地址:http://www.cnblogs.com/fightformylife/p/4229913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!