代码随想录算法训练营第四十五天【动态规划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.hqwc.cn/news/214465.html

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

相关文章

代码规范有用吗?听听100W年薪谷歌大佬怎么说!

谷歌内部的 python 代码规范 熟悉 python 一般都会努力遵循 pep8 规范&#xff0c;也会有一些公司制定内部的代码规范。大公司制定规范的目的不是说你一定要怎样去使用编程语言&#xff0c;而是让大家遵守同一套规则&#xff0c;节省其他人阅读代码的成本&#xff0c;方便协作…

好用的CRM系统到底有多重要?怎么选?

我们都知道&#xff0c;CRM软件可以让企业效率加倍。但如果选错了CRM&#xff0c;企业损失点钱是小&#xff0c;客户转化率下降才是大。下面我们就来说说&#xff0c;市面上有哪些好用的CRM&#xff1f;以及好用的CRM软件的重要性。 好用的CRM软件的重要性&#xff1a; 客户管…

2024深圳电子展,加快粤港澳电子信息发展,重点打造“湾区经济”

在“十四五”期间&#xff0c;中国电子信息产业面临着新形势和新特点。随着国家对5G、人工智能、工业互联网、物联网等“新基建”的加速推进&#xff0c;以及形成“双循环”新格局的形势&#xff0c;新型显示、集成电路等产业正在加速向国内转移。这一过程不仅带来了新的应用前…

SPSS信度分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

多回路交流三相单相电压电流电量监测开口式互感器适用多种环境用电能耗监控

1 产品概述 多回路交流无线电压电流传感器/电量采集监测仪搭配多路开口式互感器&#xff0c;可以监控采集三相电压、电流、功率和电量等信息&#xff0c;可用于能耗采集监控。支持RS485和4G网络接口&#xff0c;数据可以对接客户指定的第三方云平台。本产品可实现单相/三相用电…

电脑端有没有可以定时提醒工作计划的时间管理软件?

时间管理对职场人士来说非常重要&#xff0c;因为它可以帮助我们更有效地完成工作任务、提升工作效率、达到职业目标、更好地平衡工作和生活等方面。通过时间管理&#xff0c;我们可以更好地把握自己的工作进度&#xff0c;合理安排自己的时间&#xff0c;提高工作效率。 但是…

红酒按照糖含量怎么分类?

我们常听人们形容葡萄酒为干型或甜型&#xff0c;这指的是葡萄酒的含糖量。不含糖就是干型&#xff0c;含糖少就是半干型&#xff0c;含糖多就是甜型&#xff0c;这是葡萄酒分类的一种——按糖量分。云仓酒庄的品牌雷盛红酒分享一般分为干型、半干型、半甜型、甜型四种。 云仓…

vue2中使用echarts

1,安装echarts npm install --save echarts 2&#xff0c;具体页面 <template><div class"app-container"><div class"aa" id"main" style"width: 500px; height: 400px;"></div></div> </te…

Go lumberjack 日志轮换和管理

在开发应用程序时&#xff0c;记录日志是一项关键的任务&#xff0c;以便在应用程序运行时追踪问题、监视性能和保留审计记录。Go 语言提供了灵活且强大的日志记录功能&#xff0c;可以通过多种方式配置和使用。其中一个常用的日志记录库是 github.com/natefinch/lumberjack&am…

Matlab三角剖分插值问题分析

目录 前言 一、问题引入 二、一个例子 1.生成散点图 2.对数据进行剖分 3.点法式分析 三、最后结果 前言 上一篇文章感觉对三角剖分问题没有说清楚&#xff0c;这次专门对三角剖分问题再仔细说说。 一、问题引入 实际上这个问题是用来解决二维曲面插值问题的。 二维插值问题&…

MacM1(ARM)安装Protocol Buffers

MacM1(ARM)安装Protocol Buffers 本文目录 MacM1(ARM)安装Protocol Buffers3.21之前版本安装使用configure3.22之后版本安装使用cmake使用编译后的版本 protobuf下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 在运行./autogen.sh或./configure命…

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

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