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

70. 爬楼梯 (进阶)

代码随想录

解题思路

1.确定dp数组以及下标的含义 

dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法

2.递推公式

dp[j] += dp[j - nums[i] ]   装满背包有多少种方法一般用这个

3.遍历顺序

完全背包,且是排列,21和12是不同的方法,因为先遍历背包,再遍历物品,且都是正序

4.初始化

下标非0的dp[i]初始化为0,因为dp[i]是靠dp[i-j]累计上来的 

#include <bits/stdc++.h>
using namespace std;

int climb(int n, int m)
{
    if(n==1) return 1;
    std::vector<int> dp(n+1,0) ;
    dp[0] = 1;
    dp[1] = 1;
    for(int j=2; j<=n ; j++)
    {
        for(int i=1 ; i<= m ; i++)
        {
            if(j>=i)
            dp[j] += dp[j-i];
        }
    }
    return dp[n];
}

int main()
{
    int n,m;
    std::cin >> n >> m;
    std::cout << climb(n,m) << std::endl;
    return 0;
}

322. 零钱兑换

视频讲解: 动态规划之完全背包,装满背包最少的物品件数是多少?| LeetCode:322.零钱兑换_哔哩哔哩_bilibili

代码随想录

解题思路

1. dp[j]  装满容量为j的背包,最少物品为dp[j]

2.递推公式

dp[j] = min(dp[j - coins[i] ] + 1 , dp[j] )   取一个最小的,这个背包问题的典型递推公式是很像的

3.初始化

dp[0] = 0;

非零下标初始值为一个最大值,INT_MAX,保证dp[j]的值不会被覆盖

4.遍历顺序

求的是最小数,因此先物品再背包,和背包再物品是一样的

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        if(amount==0) return 0;
        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:279.完全平方数_哔哩哔哩_bilibili

代码随想录

解题思路

1. dp[j]  装满容量为j 的正整数的最少完全平方数是dp[j]

2.递推公式

求的是最小值,因此min(dp[j] , dp[j - i*i] + 1)

3.初始化

dp[0] =0; 

非零标为最大值,否则会覆盖最大值

4.遍历顺序

因为我们求的都是最少的元素,因此物品背包没有顺序,可以颠倒

class Solution {
public:
    int numSquares(int n) {
        vector<int> dp(n+1,INT_MAX);
        dp[0] = 0;
        for(int i=1 ; i<=n ; i++)   //先物品,再背包
        {
            for(int j = i*i ; j<=n ; j++)
            {
                if(dp[j-i*i]!=INT_MAX)
                dp[j] = min(dp[j] , dp[j - i*i] + 1);
            }
        }
        return dp[n];
    }
};

收获

今天的题比较简单,基本都是自己解的,继续加油

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

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

相关文章

Java面试——中间件

OpenFeign 1、openFeign是一个HTTP客户端&#xff0c;它融合了springmvc的注解&#xff0c;使之可以用REST风格的映射来请求转发。 2、可以把openFegin理解为是controller层或是service层。可以取代springmvc控制层作为请求映射&#xff0c;亦或是作为service层处理逻辑&#…

《网络安全技术 生成式人工智能服务安全基本要求》征求意见稿

1. 训练数据安全要求 &#xff08;1&#xff09;数据来源安全&#xff1a; 采集来源管理&#xff1a; 采集数据前应进行安全评估&#xff0c;含违法不良信息超过5%的数据源不得使用。 采集后需核验&#xff0c;含违法不良信息超过5%的数据不得用于训练。 不同来源训练数据搭…

kafka-集群-主题创建

文章目录 1、集群主题创建1.1、查看 efak1.2、创建 主题 my_topic1 并建立6个分区并给每个分区建立3个副本1.2.1、查看 my_topic1 的详细信息 1.3、停止 kafka-01实例&#xff0c;端口号为 9095 1、集群主题创建 1.1、查看 efak 已经有三个kafka实例 1.2、创建 主题 my_topic1…

C语言(数据存储)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#xff0c;在这里撰写成文一…

windows上安装jdk1.8

这篇文章详细地介绍如何在windows上安装jdk1.8 目录 准备工作 第一步 第二步 第三步 第四步 第五步 最后的效果 查看JDK版本 准备工作 下载jdk&#xff1a;通过官网或者以下百度网盘链接下载jdk1.8 链接&#xff1a;https://pan.baidu.com/s/1zuMl0B-S6SDgiu1evw-IPQ?…

React useContext源码分析

React 框架中 useContext Hook 用于数据的传递&#xff0c;组件的数据传递有几种方式&#xff0c;通过 props、状态管理 和 useContext。本文将讲述useContext 在 React 是如何工作的&#xff0c;创建一个简单的 Context 例子并根据源码进行 Debug&#xff1a; 创建 context …

subline text3安装numpy,scipy,matplotlib,pandas,sklearn,ipynb

1&#xff0c;numpy&#xff08;基础数值算法&#xff09; 安装&#xff0c;要是在cmd直接安装到最后会报错, import numpy as np ModuleNotFoundError: No module named numpy 直接进入python环境&#xff0c;输入python -m pip install numpy就不会报错…

《科技与健康》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《科技与健康》期刊万方网可查吗 答&#xff1a;万方、维普可查 问&#xff1a;《科技与健康》是正规期刊吗&#xff1f; 答&#xff1a;万方维普收录的正规期刊。主管单位&#xff1a;长江出版传媒股份有限公司 主办单位&#xff1a;湖北科学技术…

调用阿里云智能云实现垃圾分类

目录 1. 作者介绍2. API3. 阿里云API垃圾分类业务4. 实验过程4.1 接入阿里云4.2 创建并获取AccessKey ID和Secret4.3 登录阿里云官网&#xff0c;搜索垃圾分类技术文档4.4 配置环境变量4.5 代码部分 1. 作者介绍 孙作正&#xff0c;男&#xff0c;西安工程大学电子信息学院&am…

【计算机毕设】基于SpringBoot的图书进销存管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本研究旨在设计并实现一款基于SpringBoot的图书进销存管理系统&#xff0c;旨在解决图书馆或书店在图书采购、销售和库存管理等方面的问题&#xff…

扩散模型的技术原理和应用价值

引言 一、扩散模型的基本概念 扩散模型(Diffusion Models)是一种基于概率论的生成模型&#xff0c;最初源自物理学中的扩散过程理论&#xff0c;比如墨水在水中的扩散过程。在机器学习领域&#xff0c;这一概念被创造性地应用于数据生成任务&#xff0c;特别是图像和声音的合成…

文件上传题目练习

[HNCTF 2022 Week1]easy_upload 先尝试上传一个php文件&#xff0c;发现直接就成功了 用蚁剑测试连接成功 找到flag [NISACTF 2022]bingdundun~ 白名单上传 这里因为尝试了很多绕过方式都不成功&#xff0c;去搜索了一下wp&#xff0c;发现要用到Phar://伪协议 补充&#xff…

Overleaf(Latex)论文里插入高清matlab图像,亲测有效!!

如何在论文里插入高清的实验结果是个令人头疼的问题&#xff0c;这里以overleaf对matlab结果为例进行了测试&#xff0c;亲测有效。 在matlab图像结果的左上角选择"文件"->“导出设置” 选择“渲染”&#xff0c;分辨率调至600&#xff1b; 字体和线条粗细视个人…

聊聊限流的一些事儿

一、背景 最近几年&#xff0c;随着微服务的流行&#xff0c;服务与服务之间依赖越来越强&#xff0c;调用也越来越复杂&#xff0c;服务间的稳定性变突显出来。特别是在遇到突发请求时&#xff0c;常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其…

PhpSpreadsheet表格导出

个人笔记记录 使用PhpSpreadsheet 导出excel。 多重表头生成excel 表 //读取数据库public function demo1(){// 连接spc数据库$config Config::get(databaseedc);$db Db::connect($config);$data $db->name("xxxx")->alias(a)->field(main_header, sub_…

【LeetCode算法】第108题:将有序数组转换为二叉搜索树

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;由于数组nums是递增的&#xff0c;采用二分查找法来构造平衡二叉搜索树。首先&#xff0c;选择nums的中间结点作为根节点&#xff0c;然后将左部分的中间值作为左子树…

python下用cartopy绘制地形晕染(shading)图

python可以利用rasterio&#xff0c;cartopy&#xff0c;matplotlib等库绘制地形晕染图。 1.获取高程数据 高程数据可以从GEBCO网站下载&#xff1a;&#xff08;https://www.gebco.net/data_and_products/gridded_bathymetry_data/&#xff09;。 选择raster&#xff08;栅…

web-上传项目文件夹到Git远程仓库

Git初识 概念&#xff1a;一个免费开源&#xff0c;分布式的代码版本控制系统&#xff0c;帮助开发团队维护代码 作用&#xff1a;记录代码内容&#xff0c;切换代码版本&#xff0c;多人开发时高效合并代码内容 检验成功 打开bash终端&#xff08;git专用&#xff09;命令…

RSA密钥生成、加解密代码

背景介绍 RSA公钥加密算法是1977年由罗纳德李维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;一起提出的。1987年首次公布&#xff0c;当时他们三人都在麻省理工学院工作。RSA…

【Linux】查看进程在哪个CPU上运行

当前服务器是多核&#xff0c;在进行性能压测时&#xff0c;需要除了要观测全局的CPU使用率&#xff0c;对于单进程单线程往往需要在一个cpu上运行&#xff0c;那如何查看进程在哪个CPU上运行呢&#xff1f; 方法一&#xff1a;taskset taskset命令主要是用来检索或设置一个处…