leecode-动态规划-基础题目

一、简述

DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。

所以动态规划中每一个状态一定是由上一个状态推导出来的

重点:状态转移公式

二、一维

1、[509]斐波那契数

2、[70]爬楼梯

dp[i]可有dp[i-1]再爬一级台阶+dp[i-2]再爬2级台阶

即dp[i]=dp[i-1]+dp[i-2]

3、[746]使用最小花费爬楼梯

可以有两个途径得到dp[i],一个是dp[i-1] 一个是dp[i-2]

dp[i - 1] 跳到 dp[i] 需要花费 dp[i - 1] + cost[i - 1]

dp[i - 2] 跳到 dp[i] 需要花费 dp[i - 2] + cost[i - 2]

那么究竟是选从dp[i - 1]跳还是从dp[i - 2]跳呢?

一定是选最小的,所以dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])

三、二维

1、不同路径

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

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

问总共有多少条不同的路径?

示例 1:

 分析:

(1)机器人坐标(0,0)终点坐标(m-1,n-1)

(2)dp[i][j]为从dp[0][0]到dp[i][j]的路径数

(3)到(i,j),可以从(i-1,j)向右移动一步,或者(i,j-1)向下移动一步

故:dp[i][j]=dp[i-1][j]+dp[i][j-1]

(4)初始化

dp[i][0]一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。

所以初始化代码为:

for (int i = 0; i < m; i++) dp[i][0] = 1;
for (int j = 0; j < n; j++) dp[0][j] = 1;

2、不同路径2(有障碍)

(1)遇到障碍物则dp[i][j]=0,表示没有办法到达终点

 for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (obstacleGrid[i][j] == 1) continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}
}

(2)初始化:

如果(i, 0) 这条边有了障碍之后,障碍之后(包括障碍)都是走不到的位置了,所以障碍之后的dp[i][0]应该还是初始值0。

for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {dp[i][0] = 1;
}
for (int j = 0; j < n && obstacleGrid[0][j] == 0; j++) {dp[0][j] = 1;
}

 遇到障碍,则停止赋值为1;

引自:代码随想录 (programmercarl.com)

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

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

相关文章

手表名表维修开单系统软件教程,佳易王钟表养护维护保养记录开单软件操作教程

手表名表维修开单系统软件教程&#xff0c;佳易王钟表养护维护保养记录开单软件操作教程 以下软件操作教程以&#xff0c;佳易王钟表养护维修管理系统软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 一、软件程序操作教程 1、佳易王钟表维…

第2章 信息技术知识

第2章 信息技术知识 本章简要叙述了信息技术相关基础知识&#xff0c;包含软件工程、面向对象系统分析与设计、应用集成技术、计算机网络技术和新一代信息技术内容。 2.1 软件工程 随着所开发软件的规模越来越大、复杂度越来越高&#xff0c;加之用户需求又并不十分明确&…

k8s上部署单节点apache-lotdb

一、yaml文件 使用的nfs的动态存储类&#xff0c;需要提前搭建。 # cat lotdb.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: logsnamespace: lotdb spec:storageClassName: "nfs-client"accessModes:- ReadWriteManyresources:requests:storag…

Spring Session 多服务Session共享

在新项目中需要开发单点登录功能&#xff0c;单点登录服务端提供方使用的是CAS技术&#xff0c;是根据Session来判断用户是否完成了登录操作的。Session是保存在服务器本地内存中的&#xff0c;而我的项目是需要多服务部署的&#xff0c;这就意味着会部署在不同的服务器中&…

中国百货业元宇宙转型:挑战与机遇并存

在数字化和科技创新的推动下&#xff0c;中国百货业正站在一个新的历史节点上。面对着电子商务的冲击和消费者需求的演变&#xff0c;传统百货业正在经历一场前所未有的转型。而元宇宙&#xff0c;这一全新概念的提出&#xff0c;为百货业的变革带来了无限的想象空间。 **百货…

淘宝商品历史价格查询(免费)

当前资料来源于网络&#xff0c;禁止用于商用&#xff0c;仅限于学习。 淘宝联盟里面就可以看到历史价格 并且没有加密 淘宝商品历史价格查询可以通过以下步骤进行&#xff1a; 先下载后&#xff0c;登录app注册账户 打开淘宝网站或淘宝手机App。在搜索框中输入你想要查询的商…

【Linux操作系统-测试】第二节.Linux 常用指令介绍(下)

文章目录 前言总结 前言 二、查看文件内容 2.1 cat 命令--查看文件内容 2.2 more 命令--分屏查看 2.3 grep 命令--过滤查看 三、linux其他常用命令 3.1 echo 命令--回显 3.2 clear 命令--清屏 3.3 >&#xff0c;>>重定向符号--输出重定向 3.4 管道符号--命令结果传递…

使用 Python 中的 `sklearn` 库实现 KNN 分类

Scikit-Learn 使用 Python 中的 sklearn 库实现 KNN 分类安装 sklearn 库导入库并准备数据使用 sklearn 实现 KNN 分类详细说明重点内容 使用 Python 中的 sklearn 库实现 KNN 分类 K最近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;是一种简单且有效的分类算法。在 P…

【问题记录】Windows中Node的express无法直接识别

问题描述 在使用express_generator的时候windows平台中出现无法识别express命令的问题&#xff0c;另外就算添加了全局环境变量也没用。 问题解决 查看官方文档发现在node版本8之前的时候使用的是express&#xff0c;但是之后的版本使用npx&#xff0c;这个工具的出现主要想…

keil mdk注释插件合集格式、时间、日期注释

文章目录 一、前言二、安装步骤2.1 解压tools.zip2.2 tools 文件解释2.3 添加注释带keil 三、配置3.1 格式化代码3.2 文件注释3.3函数注释3.4 当前日期3.5 当前时间 四、编辑注释模板4.1 编辑函数注释模板4.2 编辑C文件注释模板4.3 编辑h文件注释模板 五、为注释功能添加快捷键…

在冰火岛买火车票

题目 小张无忌在冰火岛听了谢逊爷爷讲了许多少林寺的故事&#xff0c;非常仰慕少林寺这样的武学圣地。特别是藏经阁中收藏了大量武学秘籍&#xff0c;金刚指、易筋经、龙象波若功都非常想学。一有空&#xff0c;便缠着谢逊爷爷教他一招半式。今年暑假&#xff0c;张翠山夫妇想…

【Kubernetes安装】从零开始使用kubeadm命令工具部署K8S v1.28.2 集群

文章目录 一、虚拟机配置参数说明二、kubernetes v1.28.2版本介绍三、CentOS 7.9 系统初始化配置3.1 配置CentOS系统基础环境3.1.1 配置hosts3.1.2 永久关闭selinux3.1.3 关闭swap分区3.1.4 所有节点全部关闭防火墙3.1.5 配置ntp server同步时间3.1.6 添加kubernetes镜像源 3.2…

python的类中的super是做什么的

其实就是子类调用一下父类的构造函数(或者其他函数也行)。:   在 Python 中&#xff0c;super() 是一个用于调用父类&#xff08;或基类&#xff09;的方法。它通常在子类中使用&#xff0c;以便调用其父类的初始化方法或其他方法&#xff0c;从而确保父类的初始化代码在子类…

spring boot easyexcel

1.pom <!-- easyexcel 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.projectlombok</group…

uniapp,app端使用echarts不兼容,可以使用iframe来使用echarts

可以新建文件夹 echarts&#xff0c;里面放echart.min.js文件,echarts.html文件生成echarts图&#xff0c;之所以用iframe不用webview&#xff0c;是因为webview容易出问题&#xff0c;最明显问题是层级问题。 <!DOCTYPE html> <html lang"en"> <hea…

Maven依赖 dependencyManagement、 dependencies、 dependency

在Maven项目构建工具中&#xff0c;“dependencies”、“dependencyManagement”和“dependency”这三个概念扮演着重要的角色&#xff0c;它们之间既有区别又有联系。以下是对这三个概念的详细解释以及它们之间的区别与联系&#xff1a; 一、基本概念 dependencies 定义&…

12--RabbitMQ消息队列

前言&#xff1a;前面一章内容太多&#xff0c;写了kafka&#xff0c;这里就写一下同类产品rabbitmq&#xff0c;rabbitmq内容较少&#xff0c;正好用来过度一下&#xff0c;概念还是会用一些例子来说明&#xff0c;实际部署的内容会放在概念之后。 1、基础概念 1.1、MQ消息队…

CSS原子化

目录 一、定义 二、原子化工具 2.1、tailwind 2.1.1、以PostCss插件形式安装 2.1.2、不依赖PostCss安装 2.1.3、修改原始配置 2.2、unocss 三、优缺点 3.1、优点 3.2、缺点 一、定义 定义&#xff1a;使用一系列的助记词&#xff0c;利用类名来代表样式。 二、原子化…

FastGPT源码部署,不使用docker

在使用FastGPT的过程中&#xff0c;可能有的功能不符合自己的需求。如果使用docker部署没办法修改源码二次开发&#xff0c;所以需要本地通过源码部署。 操作如下&#xff1a; 下载最新代码 git clone https://github.com/labring/FastGPT.git按照pnpm npm install pnpm -g …

uniapp——银行卡号脱敏

样式 代码 {{bankNumber.replace(/(\d{4})(?\d)/g, "●●●● ").replace(/(\d{2})(?\d{2}$)/, " $1")}} 将银行卡号按照每四位一组的方式进行处理&#xff0c;前面的变成 剩下的正常显示