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

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

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

网格中的障碍物和空位置分别用 1 和 0 来表示。

说明:m 和 n 的值均不超过 100。

示例 1:

输入:
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
输出: 2
解释:
3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

public class Solution63 {
     public static int uniquePathsWithObstacles(int[][] obstacleGrid) {
         int i,j;
         int m,n;
         m = obstacleGrid.length;
         n = obstacleGrid[0].length;
         int[][] dp = new int[m][n];
         if(obstacleGrid[0][0]==1)
         {
             return 0;
         }
         for(i=0;i<m;i++)
            {
                if(obstacleGrid[i][0]!=1)
                {
                    dp[i][0]=1;
                }
                if(i>0)
                {
                    dp[i][0]=dp[i-1][0]; //如果第一列存在障碍,障碍点以下的dp值都应该为0
                }
                for(j=0;j<n;j++)
                {
                    if(j>0&&obstacleGrid[0][j]!=1)
                    {
                         dp[0][j]=dp[0][j-1];//如果第一行存在障碍,障碍点以下的dp值都应该为0
                    }
                    if(obstacleGrid[i][j]==1)
                    {
                        dp[i][j]=0;
                    }
                    if(i!=0&&j!=0&&obstacleGrid[i][j]!=1)
                    {
                        dp[i][j]=dp[i][j-1]+dp[i-1][j];
                    }
                }
                
            }
         return dp[m-1][n-1];
        }
     public static void main(String[] args)
     {
    //  int[][] a =  {{0,0,0},{0,1,0},{0,0,0}};
        int[][] a = {{0,1,0,0,0},{1,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}} ;
         //int[][] a = {{0,0},{0,0},{1,1}};
         System.out.println(uniquePathsWithObstacles(a));
     }
}

动态规划--Leetcode63.不同路径二相关推荐

  1. 九十四、动态规划系列之路径问题

    @Author:Runsen 在动态规划最短路径经常提及,在上几篇介绍过相关的最短路径的问题,介绍过使用Dijkstra算法去求解,但是Dijkstra算法是基于贪心算法,按路径长度递增的次序一步一步 ...

  2. 动态规划最优二叉搜索树C语言,【算法导论】动态规划之“最优二叉搜索树”...

    详解动态规划之"最优二叉搜索树" 之前两篇分别讲了动态规划的"钢管切割"和"矩阵链乘法",感觉到了这一篇,也可以算是收官之作了.其实根据前两 ...

  3. 第十五章 动态规划(最优二叉搜索树)

    第15章动态规划(最优二叉搜索树) 15.5 最优二叉搜索树 15.5 练习 15.5-1 15.5-2 15.5-3 15.5-4 说在前面的话: 为什么单独拿出来发? 1.由于排版篇幅问题,放一起 ...

  4. python用动态规划求删除路径_Python | 动态规划求解TSP

    解题思路主要有两部分: i为当前节点(城市),S为还没有遍历的节点(城市集合),表示从第i个节点起,经历S集合中所有的点,到达终点的最短路径长度. 回溯找到最优的路径,需要将S集合一一对应一个数字(类 ...

  5. 问题 A: 【动态规划】采药_二维数组_一维数组

    问题 A: [动态规划]采药 时间限制: 1 Sec  内存限制: 64 MB 提交: 35  解决: 15 [提交][状态][讨论版] 题目描述 山洞里有一些不同的草药,采每一株都需要一些时间,每一 ...

  6. LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III

    371. 两整数之和 2021.9.26 每日一题 题目描述 给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和. 示例 1: 输入:a = 1, b = 2 ...

  7. 【算法•日更•第九期】树型动态规划详解:二叉苹果树

    ▎前置技能:动态规划&树 树型动态规划一听就知道是在树结构上使用的动态规划,那么不会树结构和动态规划怎么行?戳这里了解动态规划和树. ▎什么是树型动态规划? ☞『定义』 树形动态规划问题可以分 ...

  8. 动态规划思想——最优二叉搜索树问题(附完整的代码)

    问题: 最优二叉搜索树问题的问题提出是,设S={x1, x2, ..., xn}是一个由n个关键字组成的线性有序集,(a0, b1, a1, ..., bn, an) 为集合S的存取概率分布,表示有序 ...

  9. 【算法设计与分析】动态规划:最优二叉搜索树

    最优二叉搜索树问题的问题提出是,设S={x1, x2, -, xn}是一个由n个关键字组成的线性有序集,(a0, b1, a1, -, bn, an) 为集合S的存取概率分布,表示有序集S的二叉搜索树 ...

最新文章

  1. opencv for linux mac,opencv for Java在MacOS 10.10安装
  2. 10 分钟快速入门海量数据搜索分析引擎 Elasticearch
  3. SAP UI5 初学者教程之十三 - 如何添加自定义 CSS 类试读版
  4. 每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!
  5. hornetq_Spring 3 HornetQ 2.1集成教程
  6. maven 公共模块依赖_「spring-boot 源码解析」spring-boot 依赖管理
  7. format 函数包含_Python成为专业人士笔记-高级对象Format格式化
  8. 软件项目经理应该具备的心态
  9. python算法详解豆瓣_豆瓣爬虫实践-python版
  10. 信息学奥赛一本通(1257:Knight Moves)
  11. Android Studio 3.1无法导入模块的解决办法
  12. 从JimmyNews有感于互联网的传播能力
  13. SpringCloud从入门到精通——微服务注册中心
  14. 通信upf是什么意思_管理UPF的方法、装置及系统与流程
  15. scala安装与配置(详细步骤)
  16. 在华为能拿多少工资,揭秘一个真实的华为!
  17. 《极客与团队》一HRT实战
  18. 008高级用法markdown编写幻灯片
  19. ROS入门-ROS的安装及编写简单的节点talker和listener
  20. 在react怎样引入jQuery

热门文章

  1. 程序员面试金典 - 面试题 10.01. 合并排序的数组
  2. 剑指Offer - 面试题64. 求1+2+…+n(递归)
  3. LeetCode 116. 填充每个节点的下一个右侧节点指针(递归循环)
  4. LeetCode 832. 翻转图像(异或^)
  5. 详解一个自己原创的正则匹配IP的表达式
  6. python中的常见的列表操作及注意事项
  7. .html文件没法解析,HTML解析 - 从.html文件
  8. 为什么回归问题用MSE?
  9. 人在斯坦福,刚上CS224n
  10. Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)【Dalston版】