代码随想录算法训练营第四十五天【动态规划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];
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

echarts笛卡尔坐标系热力图当坐标及数据为小数时

// X坐标轴 const xValue [6,6.5,7,7.5,8,8.5,9,9.5,10]; //Y坐标轴 const yValue [1.5,2,2.5,3,3.5,4,4.5,5,5.5,6]; // 需要展示的值【X坐标,Y坐标,展示的数值】 const data [[6.5,2,4], [7, 2.5, 10]] ; // 坐标轴及数值存在小数时&#xff0c;需要进行转化&#xff0c;否…

图扑数字孪生在智慧校园可视化中的应用

当今&#xff0c;智慧校园发展阶段亟需推动信息可视化建设与发展&#xff0c;将大数据、云计算、可视化等高新技术相融合&#xff0c;为校园师生创造科学智能的学习环境&#xff0c;并实现教学资源最大化和信息服务智能化。帮助学校更好地应用校园可视化技术&#xff0c;提升校…

【医学图像处理】超详细!PET图像批量预处理

目录 一、单个PET图像预处理1、使用[MRIConvert](https://pan.baidu.com/s/1cn3kgeVRir8HvP6HHm0M0Q?pwd5rt5)处理DCM2、MRI和PET数据预处理过程1&#xff09; 打开matlab命令行输入spm pet&#xff0c;打开SMP12&#xff0c;界面如下2&#xff09; Realign&#xff0c;只需要…

小程序:用户查找英语单词的意思 ← Python字典

【程序分析】 ● 字典中的条目是没有顺序的。 ● 可以对字典使用如下方法&#xff1a; keys()、values()、 items()、 clear()、 get(key)、 pop(key) 和popitem()【程序代码】 dictionary{"dog":"狗","apple":"苹果","banana&q…

软件测试该如何发展?自我价值诉求?“我“的测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 其实测试的生态&a…

curl添加https服务

CURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。 首选删除系统自带的openssl&#xff0c;因为他只有可执行程序和库&#xff0c;没有头文件。 sudo apt-get remove openssl openssl官网&am…

国产自研数字孪生引擎如何突围?易知微给出了一个答案!

大数据产业创新服务媒体 ——聚焦数据 改变商业 在数字化转型的大潮中&#xff0c;数字孪生引擎以其独特的能力&#xff0c;正迅速成为能源、智慧城市、智能制造及智能政务等多个领域的关键技术。通过创建现实世界的虚拟副本&#xff0c;数字孪生为复杂系统的管理、优化和预测…

每日一题 2824. 统计和小于目标的下标对数目(简单)

简单题&#xff0c;走流程 class Solution:def countPairs(self, nums: List[int], target: int) -> int:ans 0for i in range(len(nums)):for j in range(i 1, len(nums)):if nums[i] nums[j] < target:ans 1return ans

数据治理技术之数据清洗

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

Jetson orin(Ubuntu20.04)不接显示器无法输出VNC图像解决办法以及vnc安装记录

sudo apt install vino 好像Jetpack 5.0中已经自带了。。 配置VNC server: gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false 编辑org.gnome,增加一个“enabled key”的参数&#xff1a; cd /usr/share/glib-2…

数据结构-树

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

Linux | 创建 | 删除 | 查看 | 基本命名详解

Linux | 创建 | 删除 | 查看 | 基本命名详解 文章目录 Linux | 创建 | 删除 | 查看 | 基本命名详解前言一、安装Linux1.1 方法一&#xff1a;云服务器方式1.2 方法二&#xff1a;虚拟机方式 二、ls2.2 ll 三、which3.1 ls -ld 四、pwd五、cd5.1 cd .\.5.2 ls -al5.3 重新认识命…

一个令人惊艳的新项目,SVD开源了!

大家好&#xff0c;我是 Jack。 对于 Stable Diffusion&#xff0c;想必我的读者朋友们对此都不陌生。 自 Stability AI 公司发布 SD&#xff08;全称&#xff1a;Stable Diffusion) 以来&#xff0c;受到了很多人的喜爱。 SDXL 效果 随后技术升级&#xff0c;又发布了 SDXL…

rsyslog学习

rsyslog是什么 RSYSLOG&#xff08;Remote System Logging&#xff09;是一个开源的日志处理工具&#xff0c;用于在 Linux 和 Unix 系统上收集、处理和转发日志。它是一个健壮且高性能的日志处理程序&#xff0c;可以替换 Syslogd 作为标准的系统日志程序。RSYSLOG 提供了许多…

Re53:读论文 How Can We Know What Language Models Know?

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;How Can We Know What Language Models Know? ArXiv网址&#xff1a;https://arxiv.org/abs/1911.12543 官方GitHub项目&#xff08;prompt之类的都有&#xff09;&#xff1a;https:…

万份水稻样本,挖掘罕见变异

水稻作为全球最重要的粮食作物之一&#xff0c;为全球一半以上的人口提供食物。自然变异是基因改良和现代育种的重要遗传基础&#xff0c;广泛挖掘水稻种质群体中的变异具有重要意义&#xff0c;近年来&#xff0c;科学家们更多关注大规模群体中的稀有变异。 2023年10月&#…

MobaXterm连接节点一段时间后超时Session stopped

1、MobaXterm &#xff08;1&#xff09;设置ssh 超时时间 &#xff08;2&#xff09;设置保持连接 如果服务器端设置了超时时间&#xff0c;会以服务器为准&#xff0c;具体设置&#xff1a; 2、服务端 cat /etc/ssh/sshd_config | grep "ClientAlive" 可以把设置…

抢先看|第二届世界直播电商大会邀您共话时代“新电商”

党的二十大报告指出&#xff0c;要加快发展数字经济&#xff0c;促进数字经济和实体经济深度融合。要深化国家数字经济创新发展试验区建设&#xff0c;打造一批具有国际竞争力的战略性新兴产业集群和数字产业集群。电子商务作为数字经济中规模最大、表现最活跃、发展势头最好的…

文旅虚拟人IP:数字时代的传统文化推荐官

近几年&#xff0c;随着文旅虚拟人频“上岗”&#xff0c;虚拟人逐渐成为了文旅品牌的一种新颖的传统文化传播思路。 文旅品牌定制化推出虚拟人&#xff0c;本质原因是2023旅游业全面复苏&#xff0c;各文旅玩法同质化现象严重&#xff0c;在这样的境遇下&#xff0c;文旅品牌开…