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

完全背包

文章

一维
只有一个物品时 尽可能多装
dp[j]=max( dp[j] (一般=0) , dp[j-weight[0]]+value[0] (要求j>weight[0]) )
下一层
dp[j]=max (dp[j] , dp[j-weight[i]] +valuw[i] )
从前往后遍历:因为腾一件value更高就腾,至于腾一件后里面包含几件都可能,所以要从前往后推。

// 先遍历物品,在遍历背包
void test_CompletePack() {vector<int> weight = {1, 3, 4};vector<int> value = {15, 20, 30};int bagWeight = 4;vector<int> dp(bagWeight + 1, 0);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]);}}cout << dp[bagWeight] << endl;
}
int main() {test_CompletePack();
}因为都是从前往后,所以遍历内外层都可以

518. 零钱兑换 II

文章
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。

示例 1:

输入: amount = 5, coins = [1, 2, 5]
输出: 4
解释: 有四种方式可以凑成总金额:

5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
示例 2:

输入: amount = 3, coins = [2]
输出: 0
解释: 只用面额2的硬币不能凑成总金额3。
示例 3:

输入: amount = 10, coins = [10]
输出: 1
注意,你可以假设:

0 <= amount (总金额) <= 5000
1 <= coin (硬币面额) <= 5000
硬币种类不超过 500 种
结果符合 32 位符号整数

注意初始化

class Solution {
public:int change(int amount, vector<int>& coins) {vector<int> dp(amount+1,0);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]]+dp[j];}} return dp[amount];}};

377. 组合总和 Ⅳ

文章讲解
给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。

示例:

nums = [1, 2, 3]
target = 4
所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)

请注意,顺序不同的序列被视作不同的组合。

因此输出为 7。

如果求组合数就是外层for循环遍历物品,内层for遍历背包。

如果求排列数就是外层for遍历背包,内层for循环遍历物品

真想不明白!!

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++) { // 遍历物品if (i - nums[j] >= 0 && dp[i] < INT_MAX - dp[i - nums[j]]) {dp[i] += dp[i - nums[j]];}}}return dp[target];}
};

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

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

相关文章

Vue-- 实现简单版 vue-router

实现简单版vue-router3 前置知识&#xff1a; 1、vue 插件机制 &#xff1a; vue.use(arg) arg可以是一个函数和对象&#xff0c;需要有一个install方法&#xff0c;如果是函数&#xff08;没有install方法&#xff09;&#xff0c;则直接执行该函数。install 方法第一个参数…

Linux进程状态

目录 1.R运行状态&#xff08;running&#xff09; 2.S睡眠状态&#xff08;sleep&#xff09; 3.T或t状态&#xff08;stopped 或 tracing stop&#xff09; 4.Z状态&#xff08;zombie&#xff09;&#xff08;僵尸进程&#xff09; 1.R运行状态&#xff08;running&…

exec 和 xargs 命令的用法区别,优缺点

exec 和 xargs 都是用于执行命令的工具&#xff0c;但它们有不同的特点、用法和优缺点。 exec 命令特点和用法&#xff1a; 特点&#xff1a; exec 命令是由 find 命令提供的一个选项&#xff0c;它允许在 find 命令查找到的文件上执行指定的命令。exec 将对 find 查找到的每一…

通过Spring Boot 实现页面配置生成动态接口?

流程介绍 在Spring Boot中实现页面配置生成动态接口通常涉及几个关键步骤: 设计页面配置:首先,你需要设计一个用户界面(UI),允许用户通过此界面来配置接口的各种参数,例如HTTP方法(GET、POST等)、URL路径、请求参数、响应数据格式等。保存配置信息:当用户通过页面配置…

Self-supervised Contextual Keyword and Keyphrase Retrieval with Self-Labelling

文章目录 题目摘要方法数据集实验 题目 通过自我标记进行自我监督的上下文关键字和关键词短语检索 论文地址&#xff1a;https://www.preprints.org/manuscript/201908.0073/v1 项目地址&#xff1a;https://github.com/naister/Keyword-OpenSource-Data 摘要 在本文中&#x…

2023 年江苏省职业院校技能大赛(中职)网络搭建与应用赛项公开赛卷——技能要求

2023 年江苏省职业院校技能大赛&#xff08;中职&#xff09;网络搭建与应用赛项公开赛卷——技能要求 2023 年江苏省职业院校技能大赛&#xff08;中职&#xff09; 网络搭建与应用赛项公开赛卷——技能要求 竞赛说明 1. 竞赛内容分布 “网络搭建与应用”竞赛共分五个部…

反向传播 — 简单解释

一、说明 关于反向传播&#xff0c;我有一个精雕细刻的案例计划&#xff0c;但是实现了一半&#xff0c;目前没有顾得上继续充实&#xff0c;就拿论文的叙述这里先起个头&#xff0c;我后面将修改和促进此文的表述质量。 二、生物神经元 大脑是一个由大约100亿个神经元组成的复…

寄存器(内存访问)

文章目录 寄存器&#xff08;内存访问&#xff09;1 内存中字的存储2 DS和[address]3 字的传送4 mov、add、sub指令5 数据段6 栈7 CPU提供的栈机制8 栈顶超界的问题9 push、pop指令10 栈段 寄存器&#xff08;内存访问&#xff09; 1 内存中字的存储 CPU中&#xff0c;用16位寄…

css的严格模式和混杂模式区别?

在网页开发中&#xff0c;CSS 的严格模式&#xff08;也称为标准模式&#xff09;和混杂模式&#xff08;也称为怪异模式或兼容模式&#xff09;是两种不同的渲染模式&#xff0c;它们影响了浏览器对网页的解析和渲染方式&#xff0c;下面是它们之间的主要区别&#xff1a; 严格…

pycharm安装配置运行py代码与命令行运行

命令行(winr cmd python) 三个小箭头表示可以运行py代码 什么是解释器 文字翻译二进制 你对电脑说 我爱你 电脑不知道什么意思 你对电脑说 111001101000100010010001 111001111000100010110001 111001001011110110100000 电脑便知道了你爱它 那么如何给计算机说这些二进制串…

C++中的STL-string类

文章目录 一、为什么学习string类&#xff1f;1.1 C语言中的字符串 二、准库中的string类2.2 string类2.3 string类的常用接口说明2.4 string类对象的容量操作2.5 string类对象的访问及遍历操作2.5 string类对象的修改操作2.7 string类非成员函数2.8 模拟实现string 一、为什么…

字节飞书前端实习面试

属于是被字节狠狠地拷打了。面试官人很好,让人感觉有很沉稳的感觉。问了一大堆关于底层的问题,属于是把我整麻了。 项目部分问的不多,主要问的都是一些前端涉及的底层知识,层层递进。 1.vue3的响应式是如何实现的 2.computed和watch是什么,有什么应用场景 3.盒子模型 4.BF…

富文本配置渲染场景问题杂谈

背景 可视化页面搭建场景&#xff0c;需要支持配置富文本内容并在页面中渲染&#xff0c;富文本编辑器SDK采用了tinymce/tinymce-react。 问题场景 问题1 &#xff1a;文本数据转义 富文本编辑器生成的HTML富文本在服务端存储时会对字符串进行转义&#xff0c;比如&#xf…

配置服务器自启动极简方式 /etc/rc.d/rc.local

配置服务器自启动有三种方式&#xff0c;本文采用极简方式 1. 修改 脚本 /etc/rc.d/rc.local 设置启动应用的脚本 vim /etc/rc.d/rc.local --追加以下内容 /home/init.sh >> /var/log/my_init.log 2>&1 &exit 0 脚本注释&#xff1a;命令中 2>&…

css选择器nth-last-child(n)的学习理解

上一节我们介绍了:nth-child(n)的使用&#xff0c;这一节我们来介绍一下:nth-last-child(n) :nth-last-child(n)&#xff1a;此选择器和nth-child(n)类似都是选择其父元素的第 n 个子元素&#xff0c;唯一的区别在于它是从父元素的子元素末尾开始往前数&#xff0c;一直到第一个…

多项式回归算法模拟

python3.6 环境 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures# 生成随机数作为x变量&#xff0c;范围在-5到5之间&#xff0c;共100个样本 x np.random.un…

深度学习训练GPU显卡选型攻略

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f4d1;上期文章&#xff1a;『仪酷LabVIEW OD实战(5)——Object DetectionTensorRT工具包快速实现yolo目标检测』 &#x1f37b;本文由virobotics(仪酷智能)原创…

Web框架开发-web框架

一、web框架 web框架&#xff08;web framwork&#xff09;是一种开发框架&#xff0c;用来支持动态网站&#xff0c;网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式&#xff0c;也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…

51单片机的万年历闹钟及温度补偿

撰写一篇基于51单片机的万年历闹钟及温度补偿的论文&#xff0c;你需要按照学术论文的标准格式和结构来组织内容。以下是一个大致的论文框架和内容建议&#xff1a; 基于51单片机的万年历闹钟及温度补偿系统设计与实现 摘要&#xff1a; 简要介绍论文的研究背景、目的、方法、…

C++特性之一:继承

1. 派生类的成员变量、成员函数、构造、析构 2. 继承的切片 3. 重定义/隐藏 重定义/隐藏&#xff1a;派生类和基类有同名的成员&#xff0c;就叫隐藏。派生类的成员隐藏了基类的成员。 隐藏时可以通过类作用限定符来访问被隐藏的成员。 class Person { public:void Print(){…