代码随想录|day44|动态规划part06● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

news2024/9/22 6:46:25

完全背包 理论基础

视频:带你学透完全背包问题! 和 01背包有什么差别?遍历顺序上有什么讲究?_哔哩哔哩_bilibili 

链接:代码随想录

//先遍历背包还是先遍历物品是没有影响的。可以和01背包保持一致,都先遍历物品再遍历背包,也就是一行行按行遍历。

与0、1背包不同的是,内层循环遍历背包时需要从小到大遍历,这点和0、1背包不同。

案例:

 

 完全背包的物品是可以添加多次的,所以要从小到大去遍历,即:

// 先遍历物品,再遍历背包
for(int i = 0; i < weight.size(); i++) { // 遍历物品
    for(int j = weight[i]; j <= bagWeight ; j++) { // 遍历背包容量
        dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);

    }
}

01背包的核心代码,01背包内嵌的循环是从大到小遍历,为了保证每个物品仅被添加一次。

for(int i = 0; i < weight.size(); i++) { // 遍历物品
    for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量
        dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
    }
}

 

518. 零钱兑换 II

与0-1背包里目标和那道题形成联动,求得是组合数

链接:代码随想录

 

1、组合数:外层for循环遍历物品(钱币),内层for遍历背包(金钱总额)的情况:

因为每一行,比如第一行只放了物品1,物品2等到第二行才放。则当遍历dp[2]只会有(1,2),不会出现(2,1).

for (int i = 0; i < coins.size(); i++) { // 遍历物品
    for (int j = coins[i]; j <= amount; j++) { // 遍历背包容量
        dp[j] += dp[j - coins[i]];
    }
}

2、排列数:外层for循环遍历背包(金钱总额),内层for遍历物品的情况:

背包容量的每一个值,都是经过 1 和 5 的计算,包含了{1, 5} 和 {5, 1}两种情况。

for (int j = 0; j <= amount; j++) { // 遍历背包容量
    for (int i = 0; i < coins.size(); i++) { // 遍历物品
        if (j - coins[i] >= 0) dp[j] += dp[j - coins[i]];
    }
}

解法:本题是组合数,所以先背包

 

class Solution {
/*假设每一种面额的硬币有无限个。一看就是完全背包
dp[i][j] 代表只用0---i前i个硬币,且凑的总金额是j的硬币组合种数
因为问的不是最大价值,只是种类数

d[i][j]+=dp[i-1][j-coins[i]];
*/
public:
    int change(int amount, vector<int>& coins) {
        int n=coins.size();
        vector<int>dp(amount+1,0);
        //初始化必须为1,不然之后推导的都是0
        dp[0]=1;
        //vector<vector<int>>dp(n,vector<int>(amount+1,0));
        for(int i=0;i<n;i++)
        {
            for(int j=coins[i];j<=amount;j++)
            {
                dp[j]+=dp[j-coins[i]];
            }
        }
        return dp[amount];



    


    }
};

 377. 组合总和 Ⅳ

链接:代码随想录

 

 本题与前面的形成对比,是排列数。

先遍历背包容量,再遍历物品

class Solution {

public:
    int combinationSum4(vector<int>& nums, int target) {

        vector<int>dp(target+1,0);
        dp[0]=1;
        for(int j=0;j<=target;j++)//排列数,先遍历容量
        {
            for(int i=0;i<nums.size();i++)//再遍历背包
            {
                if(j-nums[i]>=0 && dp[j] < INT_MAX - dp[j- nums[i]])
                {
                    dp[j]+=dp[j-nums[i]];
                }
            }
        }
        return dp[target];
    }
};

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

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

相关文章

vue-自定义指令

需求1&#xff1a;定义一个v-big指令&#xff0c;和v-text功能类似&#xff0c;但会把绑定的数值放大10倍。 需求2&#xff1a;定义一个v-fbind指令&#xff0c;和v-bind功能类似&#xff0c;但可以让其所绑定的input元素默认获取焦点。 语法&#xff1a; 局部使用&#xff…

【硬件外设使用】——I2C

【硬件外设使用】——I2CI2C基本概念I2C通信协议I2C使用方法pyb.i2cmachine.i2cI2C可用的传感器I2C基本概念 I2C是"Inter-Integrated Circuit"的缩写&#xff0c;也被称为TWI (Two Wire Interface)。 它是一种串行通信协议&#xff0c;用于连接多个设备或组件。 I2…

记一次idea+Dockerfile+docker部署

软件版本&#xff1a;idea:2021.3,docker:19.03.9,服务器&#xff1a;centos7.8 1.centos7服务器配置 在服务器上编辑docker文件 vi /usr/lib/systemd/system/docker.service修改以ExecStart开头的行 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/ru…

计算机视觉基础__图像特征

计算机视觉基础__图像特征 本篇目录&#xff1a; 一、前言 二、位图和矢量图概念 三、图像的颜色特征 四、RGB 颜色空间 五、HSV 颜色空间 六、HLS 颜色空间 七、实例代码 八、参考资料 一、前言 传统图像处理&#xff0c;需要找出图片中的关键特征&#xff0c;然后对这…

30天学会《Streamlit》(5)

30学会《Streamlit》是一项编码挑战&#xff0c;旨在帮助您开始构建Streamlit应用程序。特别是&#xff0c;您将能够&#xff1a; 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第6天 - 将…

GO变量的使用

Go变量的使用注意事项 &#xff08;1&#xff09;第一种&#xff1a;指定了变量类型&#xff0c;但是声明后若不赋值&#xff0c;则使用默认值 &#xff08;2&#xff09;第二种&#xff1a;根据值自行判断我们的变量类型**&#xff08;类型推导&#xff09;** var num10.00 …

Python ---> 衍生的数据技术

我的个人博客主页&#xff1a;如果’真能转义1️⃣说1️⃣的博客主页 关于Python基本语法学习---->可以参考我的这篇博客&#xff1a;《我在VScode学Python》 随着人工智能技术的发展&#xff0c;挖掘和分析商业运用大数据已经成为一种推动应用&#xff0c; 推动社会发展起着…

接口优化方案

前言 最近随着国产化热潮&#xff0c;公司的用于营业的电脑全部从windows更换成了某国产化电脑&#xff0c;换成国产化之后&#xff0c;我们系统的前台web界面也由之前的jsp页面重构成vue.所以之前的一体式架构也变成了前后端分离的架构。但是在更换过程后&#xff0c;发现一些…

蓝绿部署技术方案

文章目录 ngx_lua介绍Nginxluangx_lua模块的原理&#xff1a;ngx_lua 模块执行顺序与阶段ngx_lua应用场景 JWTnginx镜像构造lua-redis蓝绿部署特性注意&#xff1a;蓝绿部署架构图nginx配置服务脚本部署使用职责分工 ngx_lua介绍 Nginx Nginx是Web服务器、HTTP反向代理和TCP代…

apache+tomcat实现动静分离和负载均衡

文章目录 ApacheTomcat整合环境通过JK实现动静分离编译mod_jk.so创建测试页面配置jk模块启动apache和tomcat测试。 ApacheTomcat负载均衡配置测试页配置mod_jk文件配置worker.properties测试 ApacheTomcat整合 Tomcat作为一个Servlet容器&#xff0c;可以用于运行Java Web应用…

Unity之c#专题篇——【不动如山核心章】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

连接VPN后无法上网 Windows Route 轻松解决

连接VPN后无法上网 Windows Route 轻松解决 引言文档添加路由 引言 很多时候&#xff0c;我们公司的 VPN 为了不占用公司的外网带宽和安全起见&#xff0c;都会禁止访问外网。我们的电脑连接 VPN 后&#xff0c;所有的网络数据包都会走 VPN&#xff0c;从而导致我们无法访问互…

ES集群配置和分词器(九)

一直在坑自己家人&#xff0c;对&#xff0c;说的就是你&#xff0c;大A. 上一章简单介绍了SpringBoot整合 EasyES (八), 如果没有看过,请观看上一章 一. Windows 集群部署 一.一 服务复制 将 es 复制3份 一.二 配置文件配置 每个服务节点的 config/eslsticsearch.yml 配置…

AANet: CTPA图像中肺动脉栓塞检测的动脉感知网络

AANet: Artery-Aware Network for Pulmonary Embolism Detection in CTPA Images 摘要 肺栓塞(PE)是危及生命的疾病&#xff0c;计算机断层肺血管造影(CTPA)是临床上最好的诊断技术 然而&#xff0c;在CTPA图像中&#xff0c;PE通常表现为血液动脉明亮区域中的黑点&#xff0…

UE4/5多人游戏详解(一、基础理论与局域网内部的连接)

目录 多人游戏理论简单讲解 点对点&#xff1a; 于是&#xff0c;服务端和客户端的概念出现了&#xff1a; 局域网连接&#xff1a; 从第三人称c项目开始 创建项目&#xff1a; 以一个客户端作为监听服务器 3个客户端&#xff0c;在场景后方使用服务器&#xff1a; 局…

leetcode:同构字符串(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构…

数字营销(三)如何确定合适的流量渠道?

一、为什么要确定付费客户特征&#xff1f; 首先营销策略是什么&#xff1f;营销策略&#xff0c;即战略&#xff0c;就是为实现主要流量侧的长期目标&#xff0c;所采取的具体打法和步骤。 比如一个网站的成功离不开获取网站流量和用户信任的建立。除了谷歌 SEO 获取流量&am…

【JavaEE初阶】多线程(一)

摄影分享&#xff01; 文章目录 认识线程&#xff08;Thread&#xff09;概念执行多线程编程创建线程的写法1.继承Thread&#xff0c;重写run2.实现Runnable接口3.使用匿名内部类&#xff0c;继承Thread4.使用匿名内部类&#xff0c;实现Runable5.使用Lambda表达式 Thread用法…

【ARMv8/v9 MMU 页表配置 01 】

文章目录 1.1 MMU1.1.1 虚拟地址位宽配置1.1.2 页面大小(grandule size)配置1.1.3 AArch64 页表项描述符格式1.1.4 内存属性配置 1.1 MMU 1.1.1 虚拟地址位宽配置 64 位虚拟地址中&#xff0c;并不是所有位都用上&#xff0c;除了高 16 位用于区分内核空间和用户空间的虚拟地…

SpringCloud:ElasticSearch之数据聚合

聚合&#xff08;aggregations&#xff09; 可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如何&#xff1f; 实现这些统计功能的比数据…