动态规划(6.不同路径II)

题目链接:63. 不同路径 II - 力扣(LeetCode)

 

解法:

 本题为不同路径的变型,只不过有些地方有「障碍物」,只要在「状态转移」上稍加修改就可解决。

  • 状态表示:
对于这种Γ路径类」的问题,我们的状态表⽰⼀般有两种形式:
  1. [i, j] 位置出发,巴拉巴拉;
  2. 从起始位置出发,到达 [i, j] 位置,巴拉巴拉。
这⾥选择第⼆种定义状态表示的方式:
dp[i][j] 表示:⾛到 [i, j] 位置处,⼀共有多少种方式。
  • 状态转移:
简单分析⼀下。如果 dp[i][j] 表⽰到达 [i, j] 位置的方法数,那么到达 [i, j] 位置之
前的⼀小步,有两种情况:
  1. [i, j] 位置的上⽅( [i - 1, j] 的位置)向下走一步,转移到 [i, j] 位置;
  2. [i, j] 位置的左⽅( [i, j - 1] 的位置)向右走一步,转移到 [i, j] 位置。
但是, [i - 1, j] [i, j - 1] 位置都是可能有障碍的,此时从上面或者左边是不可能到达 [i, j] 位置的,也就是说,此时的⽅法数应该是 0。
由此我们可以得出⼀个结论,只要这个位置上Γ有障碍物」,那么我们就不需要计算这个位置上的值,直接让它等于 0 即可。
  • 初始化:
可以在最前面加上⼀个Γ辅助结点」,帮助我们初始化。使用这种技巧要注意两个点:
  1. 辅助结点⾥⾯的值要Γ保证后续填表是正确的」;
  2. Γ下标的映射关系」。
在本题中,添加一行,并且添加⼀列后,只需将 dp[1][0] 的位置初始化为 1 即可。
  • 填表顺序:
根据Γ状态转移」的推导,填表的顺序就是Γ从上往下」填每⼀⾏,每⼀⾏Γ从左往右」。
  • 返回值:
根据Γ状态表示」,我们要返回的结果是 dp[m][n]

代码:

C++:

java:

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

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

相关文章

深度洞察:DeepSeek 驱动金融行业智能化转型变革

该文章为软件测评,不是广告!!!! 目录 一.金融行业的智能化转型浪潮​ 二.DeepSeek的核心技术剖析 1.DeepSeek 模型的金融智慧​ 2.实时联网搜索:把握金融市场脉搏​ 3.RAG 能力:铸就精准金…

蓝桥杯备考----》暴力枚举---金盏花

这道题,一共12位,给了后六位,我们只要枚举前六位就行了,当然如果是10的12次方的话,必须要开long long才可以存下,这点我们不要忘了 然后题目中又告诉了没有前导0,我们可以从100000开始枚举&…

RAG各类方法python源码解读与实践:利用Jupyter对RAG技术综合评测【3万字长文】

检索增强生成(RAG )是一种结合信息检索与生成模型的混合方法。它通过引入外部知识来提升语言模型的性能,从而提高回答的准确性和事实正确性。为了简单易学,不使用LangChain框架或FAISS向量数据库,而是利用Jupyter Note…

Python列表2

print("—————————— 列表的相关操作 ————————————")lst.append(x)在列表lst最后增加一个元素 lst.insert(index,x)在列表中第index位置增加一个元素 lst.clear()清除列表lst中所有元素 lst.pop(index)将列表lst中第index位置的元素取出&#xf…

华为OD机试-IPv4地址转换成整数(Java 2024 B卷 100分)

题目描述 存在一种虚拟 IPv4 地址 Q,由 4 小节组成,每节的范围为 0~255,以 # 号间隔。虚拟 IPv4 地址可以转换为一个 32 位的整数。例如: 128#0#255#255 转换为 32 位整数的结果为 2147549183(0x8000FFFF)1#0#0#0 转换为 32 位整数的结果为 16777216(0x01000000)现以字…

C语言复习笔记--数组

今天继续来浅浅推进一下C语言的复习,这次是数组的复习,话不多说,正文开始. 数组的概念 数组是⼀组相同类型元素的集合,一种自定义类型.数组中元素个数不能为0.数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组. 下面从一维数组说起. 一维数组的创建和…

Canal 解析与 Spring Boot 整合实战

一、Canal 简介 1.1 Canal 是什么? Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析(Binlog)中间件,它模拟 MySQL 的从机(Slave)行为,监听 MySQL 主机的二进制日志(Binl…

《论语别裁》第01章 学而(31) 诗的人生

不过这句话研究起来有一个问题,是诗的问题。我们知道中国文化,在文学的境界上,有一个演变发展的程序,大体的情形,是所谓汉文、唐诗、宋词、元曲、明小说,到了清朝,我认为是对联,尤其…

笔记本运行边缘计算

笔记本电脑可以用来运行PCDN(Peer-to-Peer Content Delivery Network)服务。实际上,如果你有闲置的笔记本电脑,并且它具备一定的硬件条件和网络环境,那么它可以成为一个不错的PCDN节点。 运行PCDN的基本要求 硬件需求…

暗光增强技术研究进展与产品落地综合分析(2023-2025)

一、引言 暗光增强技术作为计算机视觉与移动影像领域的核心研究方向之一,近年来在算法创新、硬件适配及产品落地方面取得了显著进展。本文从技术研究与产业应用两个维度,系统梳理近三年(2023-2025)该领域的关键突破,并对比分析主流手机厂商的影像技术优劣势。 二、暗光增…

多维array和多维视图std::mdspan

多维数组 这个特性用于访问多维数组,之前C operator[] 只支持访问单个下标,无法访问多维数组。 因此要访问多维数组,以前的方式是: 重载operator(),于是能够以m(1, 2) 来访问第1 行第2 个元素。但这种方式容易和函数…

Python标准库之os模块常用方法

一、os模块简介 os模块是Python标准库中与操作系统交互的一个重要模块。它提供了非常丰富的方法来处理文件、目录以及与操作系统相关的操作,让我们可以编写跨平台的代码,无论是在Windows、Linux还是macOS系统上都能运行。 二、文件和目录操作 获取当前…

利用AI让数据可视化

1. 从问卷星上下载一份答题结果。 序号用户ID提交答卷时间所用时间来源来源详情来自IP总分1、《中华人民共和国电子商务法》正式实施的时间是()。2、()可以判断企业在行业中所处的地位。3、()是指店铺内有…

K8S学习之基础三十五:k8s之Prometheus部署模式

Prometheus 有多种部署模式,适用于不同的场景和需求。以下是几种常见的部署模式: 1. 单节点部署 这是最简单的部署模式,适用于小型环境或测试环境。 特点: 单个 Prometheus 实例负责所有的数据采集、存储和查询。配置简单&…

【第14节】windows sdk编程:进程与线程介绍

目录 一、进程与线程概述 1.1 进程查看 1.2 何为进程 1.3 进程的创建 1.4 进程创建实例 1.5 线程查看 1.6 何为线程 1.7 线程的创建 1.8 线程函数 1.9 线程实例 二、内核对象 2.1 何为内核对象 2.2 内核对象的公共特点 2.3 内核对象句柄 2.4 内核对象的跨进程访…

Python简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 1、基于FastAPI搭建Web服务器 # 导入FastAPI模…

uniapp工程中解析markdown文件

在uniapp中如何导入markdown文件,同时在页面中解析成html,请参考以下配置: 1. 安装以下3个依赖包 npm install marked highlight.js vite-plugin-markdown 2. 创建vite.config.js配置文件 // vite.config.js import { defineConfig } fro…

sass介绍

1、Sass简介 Sass 是一种 CSS 的预编译语言。它提供了 变量(variables)、嵌套(nested rules)、 混合(mixins)、 函数(functions)等功能,并且完全兼容 CSS 语法。Sass 能…

[JavaScript]如何利用作用域块避免闭包内存泄漏?

出自《你不知道的JavaScript》上卷 以下是本书给出的反例: function process (data) {...} var bigdata{...} process(bigdata); var btn document.getElementById(x); btn.addEventListener(click, function click{...});click会被回调在其他位置, 在addEventListener函数内…

leetcode hot100(五)

11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你…