代码随想录算法训练营第四十四天【动态规划part06】 | 完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

完全背包

有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。

题目链接:

题目页面

求解思路:

完全背包和01背包的唯一不同就是在遍历顺序上;完全背包先遍历背包或是物品都可以,并且需要正序遍历

代码:

#include <iostream>
#include <vector>
using namespace std;

void solve(vector<int> weight, vector<int> value, int bagWeight){
    vector<int> dp(bagWeight+1, 0);
    for (int i = 0; i < weight.size(); i++){
        for (int j = 0; j <= bagWeight; j++){
            if (j - weight[i] >= 0)
                dp[j] = max(dp[j], dp[j-weight[i]] + value[i]);
        }
    }
    cout << dp[bagWeight] << endl;
}

int main(){
    int N, V;
    cin >> N >> V;
    vector<int> weight;
    vector<int> value;
    for (int i = 0; i < N; i++){
        int w, v;
        cin >> w >> v;
        weight.push_back(w);
        value.push_back(v);
    }
    solve(weight, value, V);
    return 0;
}

518. 零钱兑换 II

题目链接:

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

求解思路:

本题是要求凑成总金额的物品组合个数

动规五部曲

  1. 确定dp数组及其下标含义:凑成总金额j的货币组合数为dp[j]
  2. 递推公式:dp[j] += dp[j - coins[i]];(01背包题目 494.目标和)
  3. dp数组的初始化:dp[0] = 1
  4. 确定遍历顺序:本题应该先遍历物品,再遍历背包(求组合数)
  5. 举例推导dp数组:amount = 5, coins = [1, 2, 5] ,dp状态图如下

代码:

class Solution {
public:
    int change(int amount, vector<int>& coins) {
        vector<int> dp(amount + 1);
        dp[0] = 1;
        // 先物品再背包,求组合数
        for (int i = 0; i < coins.size(); i++){
            for (int j = coins[i]; j <= amount; j++){
                dp[j] += dp[j-coins[i]];
            }
        }
        return dp[amount];
    }
};

377. 组合总和 Ⅳ

题目链接:

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

求解思路:

和上一题仅仅是遍历顺序不一样

代码:

class Solution {
public:
    int combinationSum4(vector<int>& nums, int target) {
        vector<int> dp(target+1, 0);
        dp[0] = 1;
        // 先遍历背包,再遍历物品(求排列)
        for (int i = 0; i <= target; i++){
            for (int j = 0; j < nums.size(); j++){
                // C++测试用例有两个数相加超过int的数据
                // 需要在if里加上dp[i] < INT_MAX - dp[i - num]
                if (i - nums[j] >= 0 && dp[i] < INT_MAX - dp[i - nums[j]])
                    dp[i] += dp[i - nums[j]];
            }
        }
        return dp[target];
    }
};

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

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

相关文章

linux下磁盘分区、挂载实操

文章目录 一、磁盘分区1.查看磁盘分区情况2.使用fdisk进行分区&#xff08;2T以下&#xff09;3.删除分区4.使用parted对磁盘进行分区&#xff08;大于2T&#xff09; 二、磁盘格式化1.格式化文件系统2.关闭文件系统自检3.禁止检查磁盘文件系统&#xff0c;开机修复错误 三、磁…

解决Vscode使用git提交卡住的问题

使用Vscode的git提交代码经常会很慢/卡住。 先点击左下角&#xff0c;进入设置 找到git的配置(建议直接搜索)&#xff0c;把use Editor As commit input的勾选去掉即可解决。

如何弱化市场大环境带来的影响?私域电商和裂变营销引来新趋势!

弱化市场大环境带来的影响需要从多个方面入手&#xff0c;包括深入了解市场和行业、建立品牌优势、多元化经营、优化供应链管理、加强客户关系管理、灵活应对市场变化等。同时需要注意不同领域和行业的市场变化和政策调整&#xff0c;及时调整经营策略和业务结构&#xff0c;保…

mongodb数据库的常用操作语句

说在前面的话 本文所有的操作示例&#xff0c;都以集合“HistoryTaskBase”为例。 一、查询 1、时间区间 查询“通知时间”介于2019-09-01到2019-10-01之间的数据。 db.getCollection(HistoryTaskBase).find({notifyTime:{$gte:ISODate(2019-09-01T00:00:00.000Z),$lte:ISOD…

捷诚管理信息系统 SQL注入漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、产品介绍 捷诚管理信息系统是一款功能全面&#xff0c;可以支持自…

5 分钟,开发自己的 AI 文档助手!手把手教程

大家好&#xff0c;我是鱼皮。 几个月前&#xff0c;我自己开发过一个 AI 文档总结助手应用。给大家简单演示一下&#xff0c;首先我上传了一个文档&#xff0c;定义 1 1 等于 3&#xff1a; 然后把文档喂给 AI 文档总结助手&#xff0c;再向它提问&#xff0c;然后 AI 就回答…

私域流量该如何运营和布局?提供高质量的内容和服务

私域流量的运营和布局需要建立自己的品牌形象和口碑&#xff0c;提供高质量的内容和服务&#xff0c;利用裂变式营销扩大用户规模&#xff0c;数据化运营提高用户转化率和忠诚度&#xff0c;建立会员体系增加用户粘性和参与度&#xff0c;社群运营增加用户互动和粘性。同时需要…

美国服务器在大陆连不上怎么回事?

​  在租用任何美国服务器之前&#xff0c;都需要先搞清楚一些使用问题&#xff0c;毕竟服务器能够不间断地访问也是站在们所期望的。但有时&#xff0c;美国服务器网站或许也会突然出现在大陆打不开的情况&#xff0c;在面临这种情况时&#xff0c;我们应该怎么做? 查看连不…

创建文件夹的shell脚本

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 很简单&#xff0c;先判断文件夹是否存在&#xff0c;不存在则创建。具体如下&#xff1a; #!/bin/bash # 判断文件夹是否存在 if [ ! -d "$folder…

张弛声音变现课,青春剧配音实用攻略

在为青春剧添声时&#xff0c;配音艺术家须要捕获并传达剧中年轻角色的活泼精神、成长道路上的激情&#xff0c;以及他们在面对友情、爱情和理想时的情绪起伏。青春剧特别关注年轻人的成长故事&#xff0c;着重描绘他们在成长中的经历和变化。下面是一些为青春剧配音的建议&…

中期财报解读:内地业务增长失速,维他奶还能做回豆奶一哥吗?

维他奶虽然起源于中国香港&#xff0c;但却是不少内地人的儿时回忆。 这与维他奶的业务布局侧重点有关&#xff0c;中国内地一直是维他奶最重要的市场。11月21日&#xff0c;维他奶公布了截至2023年9月30日止6个月的2024财年中期业绩。财报显示&#xff0c;维他奶业务构成中&a…

Wpf 使用 Prism 实战开发Day06

首页设计二&#xff0c;创建ListBox列表数据 1.效果图: 一.首页鼠标悬停效果 使用触发器来实现 首先&#xff0c;上面的图标文本框是使用 Border 来实现的&#xff0c;那么就要在 Border 中重写该样式。 * 所有的控件&#xff0c;触发器固定写法应该都是这样&#xff0c;只…

性能测试你还不会做?看看这篇文章你就懂了!

性能测试的概述 性能&#xff1a;百度百科定义&#xff1a;器物的性质与效用。 生活中&#xff1a;买手机&#xff0c;买电脑&#xff0c;买车 –》 性能好&#xff1a;快&#xff08;时间短&#xff09;、资源 软件的性能&#xff1a;软件在允许的范围内使用过程中的反应的…

在国外怎么申请香港优才计划项目?和在内地申请有何区别?

在国外怎么申请香港优才计划项目&#xff1f;和在内地申请有何区别&#xff1f; 随着香港优才计划的热度持续上升&#xff0c;也吸引了不少优秀人才想要申请。如果你现在人在新加坡、加拿大、马来西亚、澳大利亚或者其他国家&#xff0c;想申请香港优才计划拿香港身份&#xff…

最新版灵沐V3.3微信资源类小程序源码支持流量主

源码简介 最新版灵沐V3.3微信资源类小程序源码支持流量主&#xff0c;一套不错的流量主变现资源下载小程序&#xff0c;它支持在微信、QQ和抖音平台上运行。这次更新主要集中在全局UI设计的升级&#xff0c;并依然注重资源下载和激励视频变现的功能。另外&#xff0c;还新增了…

外地人可以在上海当老师吗

随着社会的发展&#xff0c;越来越多的人涌入大城市&#xff0c;其中也包括上海。在这个繁华的城市里&#xff0c;许多人都梦想成为一名老师&#xff0c;但是外地人可以在上海当老师吗&#xff1f; 首先需要了解上海的教育政策。根据相关规定&#xff0c;外地人可以在上海当老师…

淘宝返利APP草柴如何绑定淘宝账号?

草柴APP是一款淘宝、天猫、京东大额优惠券领取及购物返利省钱工具。通过草柴APP绑定淘宝账号&#xff0c;可领取淘宝大额内部隐藏优惠券&#xff0c;领取成功再购物可享券后价优惠&#xff0c;确认收货后可获得淘宝返利。 淘宝返利APP草柴如何绑定淘宝账号&#xff1f; 1、手…

知虾:揭秘Shopee大数据采集及分析平台的全方位运营利器

Shopee是如今备受瞩目的电商平台之一&#xff0c;而要在这个竞争激烈的市场中脱颖而出&#xff0c;了解市场趋势、选择畅销商品、分析竞争对手等是至关重要的。这就是为什么Shopee推出了知虾&#xff0c;一个强大的大数据采集及分析平台。本文将详细介绍知虾的功能和优势&#…

pip安装tkinter模块失败 No matching distribution found for tkinter

我想使用Python创建一个简单的桌面应用程序, 这个应用程序依赖于tkinter, 然而,当我尝试安装过程时,出现了错误。 $ pip install tkinter ERROR: Could not find a version that satisfies the requirement tkinter (from versions: none) ERROR: No matching distributio…

YOLOv8使用自己训练的模型,将检测图片进行可视化:效果超过YOLOv5模型,丰富改进模型的检测展示

💡更多改进内容📚 芒果专栏 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 YOLOv8使用自己训练的模型,将检测图片进行可视化:效果超过YOLOv5模型,丰富改进模型的检测展示 文章目录 核心代码改进新增代码部分修…