动态规划--Leetcode63.不同路径二
一个机器人位于一个 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.不同路径二相关推荐
- 九十四、动态规划系列之路径问题
@Author:Runsen 在动态规划最短路径经常提及,在上几篇介绍过相关的最短路径的问题,介绍过使用Dijkstra算法去求解,但是Dijkstra算法是基于贪心算法,按路径长度递增的次序一步一步 ...
- 动态规划最优二叉搜索树C语言,【算法导论】动态规划之“最优二叉搜索树”...
详解动态规划之"最优二叉搜索树" 之前两篇分别讲了动态规划的"钢管切割"和"矩阵链乘法",感觉到了这一篇,也可以算是收官之作了.其实根据前两 ...
- 第十五章 动态规划(最优二叉搜索树)
第15章动态规划(最优二叉搜索树) 15.5 最优二叉搜索树 15.5 练习 15.5-1 15.5-2 15.5-3 15.5-4 说在前面的话: 为什么单独拿出来发? 1.由于排版篇幅问题,放一起 ...
- python用动态规划求删除路径_Python | 动态规划求解TSP
解题思路主要有两部分: i为当前节点(城市),S为还没有遍历的节点(城市集合),表示从第i个节点起,经历S集合中所有的点,到达终点的最短路径长度. 回溯找到最优的路径,需要将S集合一一对应一个数字(类 ...
- 问题 A: 【动态规划】采药_二维数组_一维数组
问题 A: [动态规划]采药 时间限制: 1 Sec 内存限制: 64 MB 提交: 35 解决: 15 [提交][状态][讨论版] 题目描述 山洞里有一些不同的草药,采每一株都需要一些时间,每一 ...
- LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III
371. 两整数之和 2021.9.26 每日一题 题目描述 给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和. 示例 1: 输入:a = 1, b = 2 ...
- 【算法•日更•第九期】树型动态规划详解:二叉苹果树
▎前置技能:动态规划&树 树型动态规划一听就知道是在树结构上使用的动态规划,那么不会树结构和动态规划怎么行?戳这里了解动态规划和树. ▎什么是树型动态规划? ☞『定义』 树形动态规划问题可以分 ...
- 动态规划思想——最优二叉搜索树问题(附完整的代码)
问题: 最优二叉搜索树问题的问题提出是,设S={x1, x2, ..., xn}是一个由n个关键字组成的线性有序集,(a0, b1, a1, ..., bn, an) 为集合S的存取概率分布,表示有序 ...
- 【算法设计与分析】动态规划:最优二叉搜索树
最优二叉搜索树问题的问题提出是,设S={x1, x2, -, xn}是一个由n个关键字组成的线性有序集,(a0, b1, a1, -, bn, an) 为集合S的存取概率分布,表示有序集S的二叉搜索树 ...
最新文章
- opencv for linux mac,opencv for Java在MacOS 10.10安装
- 10 分钟快速入门海量数据搜索分析引擎 Elasticearch
- SAP UI5 初学者教程之十三 - 如何添加自定义 CSS 类试读版
- 每次启动项目的服务,电脑竟然乖乖的帮我打开了浏览器,100行源码揭秘!
- hornetq_Spring 3 HornetQ 2.1集成教程
- maven 公共模块依赖_「spring-boot 源码解析」spring-boot 依赖管理
- format 函数包含_Python成为专业人士笔记-高级对象Format格式化
- 软件项目经理应该具备的心态
- python算法详解豆瓣_豆瓣爬虫实践-python版
- 信息学奥赛一本通(1257:Knight Moves)
- Android Studio 3.1无法导入模块的解决办法
- 从JimmyNews有感于互联网的传播能力
- SpringCloud从入门到精通——微服务注册中心
- 通信upf是什么意思_管理UPF的方法、装置及系统与流程
- scala安装与配置(详细步骤)
- 在华为能拿多少工资,揭秘一个真实的华为!
- 《极客与团队》一HRT实战
- 008高级用法markdown编写幻灯片
- ROS入门-ROS的安装及编写简单的节点talker和listener
- 在react怎样引入jQuery
热门文章
- 程序员面试金典 - 面试题 10.01. 合并排序的数组
- 剑指Offer - 面试题64. 求1+2+…+n(递归)
- LeetCode 116. 填充每个节点的下一个右侧节点指针(递归循环)
- LeetCode 832. 翻转图像(异或^)
- 详解一个自己原创的正则匹配IP的表达式
- python中的常见的列表操作及注意事项
- .html文件没法解析,HTML解析 - 从.html文件
- 为什么回归问题用MSE?
- 人在斯坦福,刚上CS224n
- Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)【Dalston版】