代码随想录算法训练营第39天(py)| 动态规划 | 62.不同路径、 63. 不同路径 II

62.不同路径

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

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

问总共有多少条不同的路径?
在这里插入图片描述

思路

经典五步走,没啥好说的

class Solution:def uniquePaths(self, m: int, n: int) -> int:# 1.确定dp数组含义:表示从(0,0)出发,到(i, j) 有dp[i][j]条不同的路径。# 2.确定递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]# 3.初始化:左边和上边的元素全是1# 4.遍历顺序:从左到右,从上到下dp = [[0]*n for _ in range(m)] #创建m*n全0数组for i in range(m):dp[i][0] = 1for j in range(n):dp[0][j] = 1for i in range(1,m):for j in range(1,n):dp[i][j] = dp[i - 1][j] + dp[i][j - 1]return dp[-1][-1]

63. 不同路径 II

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

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

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

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

思路

和上一题的区别在于多了障碍物
递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1],(i, j)如果就是障碍的话应该就保持初始状态
初始化:左边和上边的元素全是1,但障碍之后的元素全是0

class Solution:def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:# 1.确定dp数组含义:表示从(0,0)出发,到(i, j) 有dp[i][j]条不同的路径。# 2.确定递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1],(i, j)如果就是障碍的话应该就保持初始状态# 3.初始化:左边和上边的元素全是1,但障碍之后的元素全是0# 4.遍历顺序:从左到右,从上到下m = len(obstacleGrid)n = len(obstacleGrid[0])dp = [[0]*n for _ in range(m)] #创建m*n全0数组for i in range(m):if obstacleGrid[i][0] == 0: # 如果没障碍则赋值1dp[i][0] = 1else: # 如果有障碍则停止赋值breakfor j in range(n):if obstacleGrid[0][j] == 0: # 如果没障碍则赋值1dp[0][j] = 1else: # 如果有障碍则停止赋值breakfor i in range(1,m):for j in range(1,n):if obstacleGrid[i][j] == 0:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]return dp[-1][-1]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDPM公式推导(二)

2 Background 扩散模型【53】是一种以 p θ ( x 0 ) : ∫ p θ ( x 0 : T ) d x 1 : T p_\theta\left(\mathbf{x}_0\right):\int p_\theta\left(\mathbf{x}_{0: T}\right) d \mathbf{x}_{1: T} pθ​(x0​):∫pθ​(x0:T​)dx1:T​ 形式的潜在变量模型,其中 x 1…

Nginx实战:故障处理_后端服务正常,nginx偶发502(Bad Gateway)

一、故障场景 用户访问服务偶发报错【502 Bad Gateway】,但是服务后端正常运行。架构如下: #mermaid-svg-4dDszusKEuPgIPlt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4dDszusKEuPgIPlt…

Qt项目天气预报(1) - ui界面搭建

ui中部 效果演示 ui效果 显示效果 控件列表 配合右图查看 居中对齐-label 设置label居中对齐(别傻傻的空格对齐了) 间距配置 widget03 外围的widget对象: 包含label 和 widget0301,如下图 widget0301 内围的widget对象,如下图 样式表 widget03 …

自养号测评全揭秘:沃尔玛卖家如何实现销量稳步增长

在沃尔玛这片激烈的商业战场上,我作为一位销售者,深知在这个竞争激烈的市场中,测评对于提升产品排名、权重以及销量的关键作用。随着测评需求的不断增长,我们意识到,寻找可靠的测评服务不再是简单的选择,而…

数组模拟单链表和双链表

目录 单链表 初始化 头插 删除 插入 双链表 初始化 插入右和插入左 删除 单链表 单链表主要有三个接口:头插,删除,插入(由于单链表的性质,插入接口是在结点后面插入) 初始化 int e[N], ne[N]; …

【scikit-learn入门指南】:机器学习从零开始

1. 简介 scikit-learn是一款用于数据挖掘和数据分析的简单高效的工具,基于NumPy、SciPy和Matplotlib构建。它能够进行各种机器学习任务,如分类、回归和聚类。 2. 安装scikit-learn 在开始使用scikit-learn之前,需要确保已经安装了scikit-le…

pyinstall打包exe报错

1- 报错 Please install pywin32-ctypes. 前提:python安装路径中已经安装了pywin32-ctypes。 运行pyinstaller报错 PyInstaller cannot check for assembly dependencies. Please install pywin32-ctypes. 解决思路: python安装路径下Lib\site-packa…

算法:位运算题目练习

目录 常见的位运算的操作总结 ①基础位操作 ②给一个数n,确定它的二进制表示中的第x位是0还是1 ③将一个数n的二进制表示的第x位修改成1 ④将一个数n的二进制表示的第x位修改成0 ⑤位图的思想 ⑥提取一个数n二进制表示中最右侧的1 ⑦干掉一个数n二进制表示中…

JVM 根可达算法

Java中的垃圾 Java中"垃圾"通常指的是不再被程序使用和引用的对象,具体表现在没有被栈、JNI指针和永久代对象所引用的对象。Java作为一种面向对象的编程语言,它使用自动内存管理机制,其中垃圾收集器负责检测和回收不再被程序引用的…

响应式德米拉数字内容交易系统素材下载站模板

★模板说明★ 该数字交易系统设计非常完美,两种响应式模式,可打开边栏模式和盒子模式;八种网站颜色,四种风格颜色可供用户自行选择,还可在网站选背景图片;完美的分成系统、充值功能、个人中心等等都以html…

可重复读(Repeatable Read) 隔离级别-幻读

幻读通常发生在范围查询中,下面通过一个简单的例子来说明幻读现象: 假设有一个名为 employees 的表,其中包含员工的ID和部门ID: CREATE TABLE employees (id INT,department_id INT,name VARCHAR(255) );现在有两个并发事务 A 和…

警示:AGI竞赛之未来十年

后新冠时代,人类智商普遍下降,人工智能赶超人类智能指日可待。 最近几天,AI领域悄悄流行一份AGI白皮书,虽然有些危言耸听,甚至包含以中国为竞争对手的阴谋论。下面是主要思想: 在过去的一年里&#xff1a…

速盾:被攻击后开ddos防御还有效吗?

在网络世界中,DDOS(分布式拒绝服务)攻击是一种常见且具有极大破坏力的网络攻击手段。当网站或系统遭受此类攻击后,一个关键的问题便是此时开启 DDOS 防御是否仍然有效。作为一名专业程序员,以下是对这一问题的深入分析…

6.11 作业

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系: 比喻:动物园的讲解员和动物表演 想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员&…

找我设计官网的不多了,看到漂亮大气的,还是忍不住分享出来。

现在有客户找我做官网设计,我说:要么搞个高大上个性化定制的,要么就选个模板得了,几千元的网站不上不下,不如不做。 分享一批高大上的网站给老铁们看看。

功能强大的API函数FindFirstFile使用介绍(附源码)

在处理文件的相关代码中,会频繁使用到Windows系统API函数FindFirstFile,这个函数功能很强大,很多功能都不开它。本文就根据我们在项目中使用该函数的情况,来大概地梳理一下使用FindFirstFile都可以实现哪些常用的功能。 1、FindFirstFile函数声明与WIN32_FIND_DATA结构体 我…

C++ 33 之 const 修饰静态成员

#include <iostream> #include <string.h> using namespace std;// 定义静态const数据成员时&#xff0c;最好在类内部初始化,避免在类外重复初始化&#xff0c;也为了代码的可读性和可维护性class Students03{ public:// 两种写法都可以const static int s_a 10;…

开源模型应用落地-LangChain高阶-LCEL-表达式语言(六)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…

openjudge_2.5基本算法之搜索_7221:拯救公主

题目 7221:拯救公主 总时间限制: 1000ms 内存限制: 65536kB 描述 多灾多难的公主又被大魔王抓走啦&#xff01;国王派遣了第一勇士阿福去拯救她。 身为超级厉害的术士&#xff0c;同时也是阿福的好伙伴&#xff0c;你决定祝他一臂之力。你为阿福提供了一张大魔王根据地的地图…

如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题

&#x1f6e0;️ 如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题 摘要 在这篇文章中&#xff0c;我们将详细探讨如何解决在升级到 IntelliJ IDEA 最新版&#xff08;2024.1.3 Ultimate Edition&#xff09;后遇到的 Git 记住密码功能失效的问题。…