代码随想录算法训练营第四十四天 | 卡码网52. 携带研究材料 ,LeetCode 518. 零钱兑换 II , 377. 组合总和 Ⅳ
题目链接:52. 携带研究材料(第七期模拟笔试) (kamacoder.com)
#include<bits/stdc++.h>
using namespace std;int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,v;cin>>n>>v;vector<int> dp(v+1,0);vector<int> weight(n,0);vector<int> val(n,0);for(int i=0;i<n;i++){cin>>weight[i]>>val[i];}for(int i=0;i<n;i++){for(int j=0;j<dp.size();j++){if(j>=weight[i]) dp[j]=max(dp[j],dp[j-weight[i]]+val[i]);}}cout<<dp[v]<<endl;return 0;
}
代码随想录 (programmercarl.com)
和01背包差不多,滚动数组01背包是第一层从前到后,第二层循环从后到前。这个完全背包两个循环都是从前到后。
题目链接:518. 零钱兑换 II - 力扣(LeetCode)
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]];}}return dp[amount];}
};
代码随想录 (programmercarl.com)
跟之前做的一道题有点相似,也是累加的,区别是01背包和完全背包。
题目链接: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++){if(nums[j]<=i && dp[i] < INT_MAX - dp[i - nums[j]])dp[i]+=dp[i-nums[j]];}}return dp[target];}
};
在动态规划:518.零钱兑换II (opens new window)中就已经讲过了。
如果求组合数就是外层for循环遍历物品,内层for遍历背包。
如果求排列数就是外层for遍历背包,内层for循环遍历物品。
如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举一个例子:计算dp[4]的时候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,3只能出现在1后面!
所以本题遍历顺序最终遍历顺序:target(背包)放在外循环,将nums(物品)放在内循环,内循环从前到后遍历。
这题对哪个循环在外层还是很有讲究的。
相关文章:
代码随想录算法训练营第四十四天 | 卡码网52. 携带研究材料 ,LeetCode 518. 零钱兑换 II , 377. 组合总和 Ⅳ
题目链接:52. 携带研究材料(第七期模拟笔试) (kamacoder.com) #include<bits/stdc.h> using namespace std;int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,v;cin>>n>>v;vector<int> dp(v1,…...
Android Kotlin知识汇总(四)Kotlin 协程实践
Kotlin的重要优势及特点之——结构化并发 Kotlin 协程是一种并发设计模式,可以在 Android 平台上让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理,例如网络调用、本地数据访问等任务的管理。 简单来说,协程就是一种轻量级的非…...
python基础篇--学习记录2
1.深浅拷贝 l1 ["张大仙","徐凤年",["李淳刚","邓太阿"]] # 变量名对应的就是内存地址,这里就是将l1的内存地址给了l2 # 现在两个变量指向同一个内存地址,l1变化l2也会变化 l2 l1 现在的需求是l2是l1的拷贝版本,但是两者是完全分割…...
自动化运维工具Ansible
一.Ansible基本内容 1.定义 Ansible是基于模块工作的,只是提供了一种运行框架,本身没有完成任务的能力,真正操作的是Anisble的模块。每个模块都是独立的、实现了批量系统配置、批量程序部署、批量运行命令等功能。 2.特点与优势 优势&…...
VR全景在智慧园区中的应用
VR全景如今以及广泛的应用于生产制造业、零售、展厅、房产等领域,如今720云VR全景更是在智慧园区的建设中,以其独特的优势,发挥着越来越重要的作用。VR全景作为打造智慧园区的重要角色和呈现方式已经受到了越来越多智慧园区企业的选择和应用。…...
用信号的方式回收僵尸进程
当子进程退出后,会给父进程发送一个17号SIGCHLD信号,父进程接收到17号信号后,进入信号处理函数调用waitpid函数回收僵尸进程若多个子进程同时退出后,这是切回到父进程,此时父进程只会处理一个17号信号,其他…...
计算机服务器中了locked勒索病毒怎么解密,locked勒索病毒解密流程
科技的发展带动了企业生产,越来越多的企业开始利用计算机服务器办公,为企业的生产运营提供了极大便利,但随之而来的网络安全威胁也引起了众多企业的关注。近日,云天数据恢复中心接到许多企业的求助,企业的计算机服务器…...
【C语言刷题】——初识位操作符
【C语言刷题】——初识位操作符 位操作符介绍题一、 不创建临时变量(第三个变量),实现两个数的交换(1)法一(2)法二 题二、 求一个数存储在内存中的二进制中“一”的个数(1࿰…...
Python 对Excel工作表中的数据进行排序
在Excel中,排序是整理数据的一种重要方式,它可以让你更好地理解数据,并为进一步的分析和报告做好准备。本文将介绍如何使用第三方库Spire.XLS for Python通过Python来对Excel中的数据进行排序。包含以下三种排序方法示例: 按数值…...
Python对头发二维建模(考虑风力、重力)
目录 一、背景 二、代码 一、背景 数值方法被用于创建电影、游戏或其他媒体中的计算机图形。例如,生成“逼真”的烟雾、水或爆炸等动画。本文内容是对头发的模拟,要求考虑重力、风力的影响。 假设: 1、人的头部是一个半径为10厘米的球体。…...
Python基础快速入门
Python基础快速入门 前置知识 Python Python是一种广泛使用的高级编程语言,以其易于学习和使用的语法而闻名。以下是Python的一些主要特点: 高级语言:Python是一种高级语言,这意味着它提供了较高层次的抽象,使编程更…...
C++的学习
代码练习 输入一个字符串,统计其中大写字母、小写字母、数字、空格以及其他字符的个数 #include <iostream>using namespace std;int main() {cout << "请输入一个字符串" << endl;string str;getline(cin,str);int capital 0;int l…...
工地安全反光衣穿戴监测报警摄像机
工地安全反光衣穿戴监测报警摄像机是为了提高工地施工人员的安全意识和监管效率而设计的。这种设备结合了反光衣、监测系统和报警摄像机的功能,可以有效减少工地事故的发生。 首先,工地安全反光衣是一种具有高度可见度的服装,能够使穿戴者在夜…...
UNIAPP微信小程序中使用Base64编解码原理分析和算法实现
为何要加上UNIAPP及微信小程序,可能是想让检索的翻围更广把。😇 Base64的JS原生编解码在uni的JS引擎中并不能直接使用,因此需要手写一个原生的Base64编解码器。正好项目中遇到此问题,需要通过URLLink进行小程序跳转并携带Base64参…...
人工智能|机器学习——K-means系列聚类算法k-means/ k-modes/ k-prototypes/ ......(划分聚类)
1.k-means聚类 1.1.算法简介 K-Means算法又称K均值算法,属于聚类(clustering)算法的一种,是应用最广泛的聚类算法之一。所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,…...
注意力、自注意力和多头注意力的区别
本文作者: slience_me 注意力、自注意力和多头注意力的区别 理解注意力(Attention)、自注意力(Self-Attention)和多头注意力(Multi-Head Attention)之间的区别非常重要,因为它们是自…...
FTP,SFTP,FTPS,SSL,TSL简介,区别,联系,使用场景说明
文章目录 简介FTPFTPSSFTP加密场景选择FTPS还是SFTPFTP、SFTP、FTPS区别、联系和具体使用场景如何使用FTP、SFTP和FTPSSSLTLSSSL和TLS区别和联系,以及使用场景SSL和TLS技术上的区别一些问题隐式的TLS(FTPS/SSL)或者显式的TLS(FTPS…...
路由算法与路由协议
路由选择协议的核心是路由算法,即需要何种算法来获得路由表中的各个项目。 路由算法的目的很简单:给定一组路由器以及连接路由器的链路,路由算法要找到一条从源路由器到目标路由器的最佳路径。通常,最佳路径是指具有最低费用的路…...
dubbo接口自动化用例性能优化
前言 去年换了一个新部门,看了下当前的自动化用例的情况,发现存在三类性能问题: 本地调试运行时等待时间较长,就算是一个简单的case,执行时间都需要1分钟以上单用例执行时间比较长,部分用例执行时间超过2…...
.net core框架
ASP.NET Core 入门 跨平台开源框架 B/S 类与方法 Console 部分称为“类”。 类“拥有”方法;或者可以说方法存在于类中。 WriteLine() 部分称为“方法”。 想要使用方法就要知道方法在哪里 —————————— 执行流 一次执行一段 ASP.NET Core 是什么东西…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
