zoukankan      html  css  js  c++  java
  • Unique Paths II (dp题)

    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];
          }
    };
  • 相关阅读:
    挑战练习13.8 用于RecyclerView 的空视图
    挑战练习13.7 复数字符串资源
    挑战练习13.6 删除crime 记录
    挑战练习12.3 更多对话框
    20. Valid Parentheses
    挑战练习11.6 添加Jump to First按钮和Jump to Last按钮
    内存 分析
    HOOK64 32转换
    MD5
    HOOk快捷键
  • 原文地址:https://www.cnblogs.com/fightformylife/p/4229913.html
Copyright © 2011-2022 走看看