代码随想录算法训练营第四十五天【动态规划part07】 | 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 (进阶)

题目链接:

题目页面

求解思路:

动规五部曲

  1. 确定dp数组及其下标含义:爬到有i阶楼梯的楼顶,有dp[i]种方法
  2. 递推公式:dp[i] += dp[i-j];
  3. dp数组的初始化:dp[0] = 1;
  4. 确定遍历顺序:排列问题,先遍历物品,再遍历背包;完全背包,遍历顺序都为正序
  5. 举例推导dp数组:

代码:

#include <iostream>
#include <vector>
using namespace std;int main(){int n, m;cin >> n >> m;vector<int> dp(n+1, 0);dp[0] = 1;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (i >= j) dp[i] += dp[i-j];}}cout << dp[n] << endl;
}

322. 零钱兑换

题目链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

求解思路:

动规五部曲

  1. 确定dp数组及其下标含义:凑足总额为j所需钱币的最少个数为dp[j]
  2. 确定递推公式:dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
  3. dp数组的初始化:dp[0] = 0,因为凑足0元所需的钱币个数是0;其余下标初始化为int的最大值,为了避免递推公式中初始值覆盖结果值
  4. 确定遍历顺序:这里求钱币最小个数,和顺序没有关系,不强调组合或是排列,因此先遍历背包或是物品都可以;因为是完全背包,所以都是正序遍历
  5. 举例推导dp数组:coins = [1, 2, 5], amount = 5为例,如图

代码:

class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount+1, INT_MAX);dp[0] = 0;for (int i = 0; i < coins.size(); i++){for (int j = coins[i]; j <= amount; j++){if (dp[j-coins[i]] != INT_MAX)dp[j] = min(dp[j], dp[j-coins[i]]+1);}}if (dp[amount] == INT_MAX) return -1;return dp[amount];}
};

279.完全平方数

题目链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

求解思路:

动规五部曲

  1. dp数组及其下标含义:和为j的完全平方数的最少数量为dp[j]
  2. 递推公式:dp[j] = min(dp[j - i * i] + 1, dp[j]);
  3. dp数组的初始化:dp[0] = 0;其余下标初始化为int的最大值
  4. 确定遍历顺序:先遍历物品或背包都可以;因为是完全背包,所以都是正序遍历
  5. 举例推导dp数组:n=5,如图

代码:

class Solution {
public:int numSquares(int n) {vector<int> dp(n+1, INT_MAX);dp[0] = 0;for (int i = 0; i <= n; i++){for (int j = 1; j * j <= i; j++){dp[i] = min(dp[i], dp[i-j*j]+1);}}return dp[n];}
};

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

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

相关文章

EcuM介绍

ECUM 1. ECUM 主要需求2. EcuM 设计详情2.1 启动与下电休眠2.1.1 启动与初始化2.1.2 EcuM 下电/休眠2.2 唤醒事件管理2.3 ECUM 模式2.3.1 Flexible2.3.2 Fixed2.3.3 Startup2.3.4 Shutdown2.3.5 SLEEP PHASE: Poll or Halt3. EcuM 集成接口调用4. 名称缩写解释5. 参考文档1. EC…

数据治理技术之数据清洗

数据清洗背景 数据质量一般由准确性、完整性、一致性、时效性、可信性以及可解释性等特征来描述&#xff0c;根据 Rahm 等人在 2000 年对数据质量基于单数据源还是多数据源以及问题出在模式层还是实例层的标准进行分类&#xff0c;将数据质量问题分为单数据源模式层问题、单数…

虚幻学习笔记—给UI添加动画

一、前言 本文所使用的虚幻版本为5.3.2&#xff0c;之前工作都是用unity&#xff0c;做这类效果用的最多的是一个DoTween的插件&#xff0c;在虚幻中都内置集成了这这种效果制作。 图1.1 UI动画 二、过程 1、首先&#xff0c;在诸如按钮、图像等可交互控件中选中&#xff0c;如…

centos userad命令详解

命令作用 用于创建用户常见参数 -d 指定用户的家目录-e 账号的到期时间&#xff0c;格式YYYY-MM-DD-u 指定该用户的默认UID&#xff0c;&#xff08;centos7开始1000是普通用户的第一个UID&#xff09;-g 指定一个初始的用户基本组&#xff08;必须已经存在&#xff09;-G 指定…

计算机网络之运输层

一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题&#xff0c;实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…

基于Boost.Asio实现端口映射器

Boost.Asio 是一个功能强大的 C 库&#xff0c;用于异步编程和网络编程&#xff0c;它提供了跨平台的异步 I/O 操作。在这篇文章中&#xff0c;我们将深入分析一个使用 Boost.Asio 实现的简单端口映射服务器&#xff0c;该服务器能够将本地端口的数据包转发到指定的远程服务器上…

从设计上理解JDK动态代理

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 照理说&#xff0c;动态…

上门预约小程序开发优势

想要放松身心&#xff0c;享受按摩的舒适感&#xff1f;那就需要一个专业的按摩师来上门服务。我们开发的预约按摩小程序app系统&#xff0c;汇聚各类上门按摩服务&#xff0c;包括推拿SPA、小儿推拿、中医等&#xff0c;为您提供高价值、高标准的养生健康体验。24小时随时提供…

GEE土地分类——使用随机森林方法和多源遥感数据进行面向对象的土地分类NAIP数据为例

简介: 数据: 国家农业图像计划 (NAIP) 在美国大陆的农业生长季节获取航空图像。 NAIP 项目每年根据可用资金和图像获取周期签订合同。从 2003 年开始,NAIP 以 5 年为一个周期。2008 年是过渡年,2009 年开始采用 3 年周期。 NAIP 图像以一米的地面采样距离 (GSD) 采集,水…

【前端】让列表像Excel单元格一样编辑

前言 领导说了一堆的话,最后总结一句就是客户很懒,客户的员工更加懒。 本着让别人节省时间的原则,提倡出了让列表和Excal的单元格一样,不仅看数据还可以随时更改数据。 查资料 根据 Jeecg-Vue3 源码介绍,从而知道是基于 Vben Admin 开源项目进行改造的。 因此在 Vben…

Sulfo-CY3 NHS荧光染料的制备和表征

Sulfo-CY3 NHS(源自星戈瑞的花菁染料)荧光染料的制备和表征是确保染料质量和性能的关键步骤。制备Sulfo-CY3 NHS荧光染料&#xff1a; 原材料准备&#xff1a;准备所需的原材料&#xff0c;包括CY3 NHS ester&#xff08;或等效的前体&#xff09;&#xff0c;用于制备Sulfo-C…

沉头孔和埋头孔的区别

埋头空和沉头孔的区别在于螺栓孔上部扩孔&#xff1a;沉头孔是直筒结构&#xff1b;埋头孔是四十五度结构&#xff0c;比沉头孔较为平顺。 螺栓孔上部扩孔能容纳螺栓头部&#xff0c;使螺头部不高于周围表面。埋头空和沉头孔只是两种不同的叫法。 沉头孔是 PCB 上的圆柱形凹槽…

RK3568 支持4x4矩阵键盘

在对应的设备树添加: keypad {compatible = "gpio-matrix-keypad";pinctrl-names = "default";pinctrl-0 = <&GPIO3_A1_pin&GPIO1_D3_pin&GPIO1_D4_pin&GPIO1_C7_pin&GPIO1_D2_pin&GPIO1_D1_pin&GPIO1_D0_pin&GPIO3_A…

将form表单中的省市区的3个el-select下拉框的样式调成统一的间隔距离和长度,vue3项目iot->供应商管理

省市区是用3个el-select组成的 在表单中用el-col&#xff0c;会导致3个下拉的距离不统一&#xff0c;市和区的前面也是不需要文字label的 如何解决:用vue3的:deep()进行样式穿透&#xff0c;由于el-form-item标签都是一样的&#xff0c;为了能准确的找到市的el-form-item&…

解决:前端js下载文件流出现“未知文件格式”错误

第一中情况&#xff1a; 出现的问题&#xff0c;前端已经设置了responseType: blob,下载下来还是格式不对。 最后经过排查&#xff0c;后端缺少charsetutf-8&#xff0c;所以前端可以设置编码&#xff1a; 第二中情况&#xff1a; 后端已经设置了charsetutf-8&#xff0c;前…

机器学习/sklearn 笔记:K-means,kmeans++,MiniBatchKMeans,二分Kmeans

1 K-means介绍 1.0 方法介绍 KMeans算法通过尝试将样本分成n个方差相等的组来聚类&#xff0c;该算法要求指定群集的数量。它适用于大量样本&#xff0c;并已在许多不同领域的广泛应用领域中使用。KMeans算法将一组样本分成不相交的簇&#xff0c;每个簇由簇中样本的平均值描…

JS实现数组去重

数组去重&#xff0c;一般都是在面试的时候才会碰到&#xff0c;一般是要求手写数组去重方法的代码。如果是被提问到&#xff0c;数组去重的方法有哪些&#xff1f;你能答出其中的 10 种&#xff0c;面试官很有可能对你刮目相看。 在真实的项目中碰到的数组去重&#xff0c;一般…

数据结构-树

参考&#xff1a;https://www.hello-algo.com/chapter_tree/binary_tree/#711 1. 介绍 树存储不同于数组和链表的地方在于既可以保证数据检索的速度&#xff0c;又可以保证数据插入删除修改的速度&#xff0c;二者兼顾。 二叉树是一种很重要的数据结构&#xff0c;是非线性的…

【学习篇】Linux中grep、sed、awk

Linux 文本处理三剑客 – awk, sed, grep grep过滤文本 https://zhuanlan.zhihu.com/p/561445240 grep 是 Linux/Unix 系统中的一个命令行工具&#xff0c;用于从文件中搜索文本或字符串。grep 代表全局正则表达式打印。当我们使用指定字符串运行 grep 命令时&#xff0c;如…

Mysql并发时常见的死锁及解决方法

使用数据库时&#xff0c;有时会出现死锁。对于实际应用来说&#xff0c;就是出现系统卡顿。 死锁是指两个或两个以上的事务在执行过程中&#xff0c;因争夺资源而造成的一种互相等待的现象。就是所谓的锁资源请求产生了回路现象&#xff0c;即死循环&#xff0c;此时称系统处于…