zoukankan      html  css  js  c++  java
  • LeetCode63 不同路径2

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

    机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。

    现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

    一样的动态规划,但是多了障碍物,其实只用把障碍物置为0就可以了。关键是起始点为障碍物怎么处理,面试时需要和面试官沟通好。

     1 class Solution {
     2 public:
     3     int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
     4         int n=obstacleGrid.size();
     5         if(!n)
     6             return 1;
     7         int m=obstacleGrid[0].size();
     8         int dp[n][m];
     9         if(obstacleGrid[0][0]==1)
    10             return 0;
    11         dp[0][0]=1;
    12 
    13         for(int i=0;i<n;++i){
    14             for(int j=0;j<m;++j){
    15                 if(i==0 && j==0)
    16                     continue;
    17                 int n1=i>=1?dp[i-1][j]:0;
    18                 int n2=j>=1?dp[i][j-1]:0;
    19                 if(obstacleGrid[i][j]==0){
    20                     dp[i][j]=n1+n2;
    21                 }
    22                 else{
    23                     dp[i][j]=0;
    24                 }
    25             }
    26         }
    27         return dp[n-1][m-1];
    28     }
    29 };
  • 相关阅读:
    5,7地面物品
    0,1选怪
    0,2使用红,蓝
    BT地址(__)
    3,7包裹物品数组
    0,4捡物
    如何在目标内网中发现更多存活主机
    xss自动化攻击
    .NET Framework 4安装失败
    利用struts1.x框架需要注意的问题
  • 原文地址:https://www.cnblogs.com/rookiez/p/13381615.html
Copyright © 2011-2022 走看看