代码随想录算法训练营第四十二天|01背包问题、01背包问题(滚动数组)、416. 分割等和子集

题目:01背包问题

文章链接:代码随想录

视频链接:LeetCode:背包问题

题目链接:卡码题目链接

图释:

//二维dp数组实现
#include <bits/stdc++.h>
using namespace std;int n, bagweight;// bagweight代表行李箱空间
void solve() {vector<int> weight(n, 0); // 存储每件物品所占空间vector<int> value(n, 0);  // 存储每件物品价值for(int i = 0; i < n; ++i) {cin >> weight[i];}for(int j = 0; j < n; ++j) {cin >> value[j];}// dp数组, dp[i][j]代表行李箱空间为j的情况下,从下标为[0, i]的物品里面任意取,能达到的最大价值vector<vector<int>> dp(weight.size(), vector<int>(bagweight + 1, 0));// 初始化, 因为需要用到dp[i - 1]的值// j < weight[0]已在上方被初始化为0   dp[i][0] 表示背包重量为0,怎么取都是装不下的// j >= weight[0]的值就初始化为value[0]for (int j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];}for(int i = 1; i < weight.size(); i++) { // 遍历科研物品for(int j = 0; j <= bagweight; j++) { // 遍历行李箱容量// 如果装不下这个物品,那么就继承dp[i - 1][j]的值if (j < weight[i]) dp[i][j] = dp[i - 1][j];// 如果能装下,就将值更新为 不装这个物品的最大值 和 装这个物品的最大值 中的 最大值// 装这个物品的最大值由容量为j - weight[i]的包任意放入序号为[0, i - 1]的最大值 + 该物品的价值构成else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}}cout << dp[weight.size() - 1][bagweight] << endl;
}int main() {while(cin >> n >> bagweight) {solve();}return 0;
}

题目:01背包问题(滚动数组)

文章链接:代码随想录

视频链接:LeetCode:背包问题(滚动数组)

题目链接:卡码网题目链接

图释:

// 一维dp数组实现
#include <iostream>
#include <vector>
using namespace std;int main() {// 读取 M 和 Nint M, N;cin >> M >> N;vector<int> costs(M);vector<int> values(M);for (int i = 0; i < M; i++) {cin >> costs[i];}for (int j = 0; j < M; j++) {cin >> values[j];}// 创建一个动态规划数组dp,初始值为0vector<int> dp(N + 1, 0);// 外层循环遍历每个类型的研究材料for (int i = 0; i < M; ++i) {// 内层循环从 N 空间逐渐减少到当前研究材料所占空间for (int j = N; j >= costs[i]; --j) {// 考虑当前研究材料选择和不选择的情况,选择最大值dp[j] = max(dp[j], dp[j - costs[i]] + values[i]);}}// 输出dp[N],即在给定 N 行李空间可以携带的研究材料最大价值cout << dp[N] << endl;return 0;
}

题目:416. 分割等和子集

文章链接:代码随想录

视频链接:LeetCode:416.分割等和子集

题目链接:力扣题目链接

图释:

class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;// dp[j] 表示容量为j的背包,最多能装dp[j]价值的东西vector<int> dp(10001, 0); //初始化为其他数时,会影响滚动数组max(dp[i],...)的值for(int i=0; i<nums.size(); i++){ sum += nums[i];}if(sum % 2==1) return false; // 不能被2整除,则无法得到两个元素和相等的子集int target = sum / 2;for(int i=0; i<nums.size(); i++){ // 遍历物品,背包中只取一次nums[i]for(int j=target; j>=nums[i]; j--){// 相当于背包的最大容量为目标值target, 背包要大于物品重量,物品重量大于背包负重则结束循环dp[j] = max(dp[j], dp[j-nums[i]]+nums[i]); //此时的dp[j]表示还未放入nums[i]的最大值}}// 如果背包刚好能装满,则说明能分割为两个元素和相等的子集if(dp[target]==target) return true;return false;}
};

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

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

相关文章

打 jar 包运行 在windows 平台控制台和日志 乱码解决

--拒絕鷄巴囉嗦&#xff0c;直接解決問題 我们在Windows下运行jar包时&#xff0c;常常会出现乱码&#xff0c;主要分为dos窗口输出的日志中出现乱码和程序返回数据出现乱码。 dos窗口输出的日志中出现乱码 执行如下命令&#xff0c;将控制台输出编码改为UTF8&#xff1a; ch…

Spring-集成Junit

一、引子 我们在Spring概念中提到&#xff1a;Spring的一大优势在于可以集成众多优秀的框架。毫无疑问&#xff0c;我首先向读者推荐的就是Junti框架。因为我们在前期的学习中&#xff0c;写一些小的demo&#xff0c;用Junit来进行小测试是非常合适的。下面让我们来具体看看如…

Python接口自动化测试实战

接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中&#xff0c;我们…

四、Flask学习之JavaScript

四、Flask学习之JavaScript JavaScript&#xff0c;作为一种前端脚本语言&#xff0c;赋予网页生动的交互性和动态性。通过它&#xff0c;开发者能够操作DOM&#xff08;文档对象模型&#xff09;实现页面元素的动态改变、响应用户事件&#xff0c;并借助AJAX技术实现异步数据…

scrapy pipelines

1.时间的处理 获取当前时间的字符串 # 创建一个datetime对象并设置为当前时间&#xff0c;该时间少8小时 dt datetime.datetime.now() # 将datetime转换为本地时区 local_tz pytz.timezone(Asia/Shanghai) local_dt local_tz.localize(dt) # 将datetime对象格式化为ISO 86…

Acwing787归并排序 788逆序对数量

theme: channing-cyan 归并排序 归并排序是一种分治算法&#xff0c;将待排序的数组递归地分成两半&#xff0c;分别排序&#xff0c;然后将两个有序的子数组归并成一个有序数组。将数组不断地二分&#xff0c;直到子数组的长度为1时&#xff0c;认为其有序。然后将相邻的两个…

MySQL Interview Speedrun

MySQL Interview Speedrun mysql如何定位慢查询 开启mysql的慢查询日志功能&#xff0c;默认超过2秒的sql语句会被记录到慢查询日志里。或者使用运维监测工具skywalking工具&#xff0c;它可以监测服务、接口和物理实例&#xff0c;可以通过它来知道哪个接口的sql执行速度比较慢…

数论 | 质数

文章目录 质数的判定&#xff1a;试除法分解质因数&#xff1a;试除法筛质数朴素做法优化&#xff1a;埃氏筛法优化&#xff1a;线性筛法 质数的判定&#xff1a;试除法 不推荐i*i<n而推荐i<n/i的原因 可能存在i*i不溢出&#xff0c;但是(i1)(i1)溢出的情况 #include &l…

山西电力市场日前价格预测【2024-01-25】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-25&#xff09;山西电力市场全天平均日前电价为274.83元/MWh。其中&#xff0c;最高日前电价为562.65元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第 2章感知机

文章目录 第 2章感知机2.1 感知机模型2.2 感知机学习策略2.2.1 数据集的线性可分性2.2.2 感知机学习策略 2.3 感知机学习算法2.3.1 感知机学习算法的原始形式2.3.2 算法的收敛性2.3.3 感知机学习算法的对偶形式 实践&#xff1a;二分类模型&#xff08;iris数据集&#xff09;数…

vue3-深入组件-组件注册和props更多细节

组件注册 定义好的组件需要注册才能被使用。 注册方式有两种 全局注册 局部注册 全局注册 .component() 方法&#xff0c;让组件在当前 Vue 应用中全局可用。 在 main.ts 中 import ./assets/main.cssimport { createApp } from vue import { createPinia } from pinia i…

Nodejs前端学习Day1

妈的&#xff0c;学vue3需要15.0以上的nodejs 文章目录 前言一、学习目标二、学习目录三、为什么JavaScript可以在浏览器中被执行四、为什么JavaScript可以操作DOM和BOM五、浏览器中的JavaScript运行环境总结 前言 妈的&#xff0c;学vue3需要15.0以上的nodejs 一、学习目标 二…

golang导入go-git错误记录

代码&#xff1a; package mainimport (...(略)"github.com/src-d/go-git"...(略) )...(略)func gitClone(workspace, url, referenceName string, auth ssh.AuthMethod) (*git.Repository, error) {return git.PlainClone(workspace, false,&git.CloneOptions{…

javascript设计模式-观察者和命令

观察者 是一种管理人与任务之间的关系的得力工具&#xff0c;实质就是你可以对程序中某个对象的状态进行观察&#xff0c;并且在其发生改变时能够得到通知。一般有两种实现方式推或拉&#xff0c;在这个过程中各方的职责如下&#xff1a; 订阅者可以订阅和退订&#xff0c;他…

递归和尾递归(用C语言解斐波那契和阶乘问题)

很多人都对递归有了解&#xff0c;但是为尾递归很少&#xff0c;所以这次来专门讲一讲关于尾递归的一些问题。 什么是尾递归 如果一个函数中所有递归形式的调用都出现在函数的末尾&#xff0c;我们称这个递归函数是尾递归的。因为在一些题目的做法中&#xff0c;我们可以发现…

数据库安全细解

数据库是为了实现一定目的按某种规则和方法组织起来的“数据”的“集合”。数据库可以直观的理解为存放数据的仓库&#xff0c;而里面的数据按照一定的格式存放&#xff0c;便于查找。 数据库的作用 1.实现数据共享&#xff0c;减少数据的冗余度&#xff1a;同文件系统相比&a…

蓝桥杯:1.幸运数字(Java)

目录 题目描述&#xff1a;答案&#xff1a;考点&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 哈沙德数是指在某个固定的进位制当中&#xff0c;可以被各位数字之和整除的正整数。 例如126是十进制下的一个哈沙德数&#xff0c;因为(126)1o mod (1&#xff0b;2&…

c语言之scanf函数

scanf函数语法格式与printf函数很相似&#xff0c;语法是scanf(格式控制,地址列表)组成 其中格式控制分为两部分&#xff0c;一部分由双引号括起来的&#xff0c;%和格式字符组成的格式字符串 普通字符串则是原样输出 地址列表是若干地址组成的表列&#xff0c;可以是变量的…

解决 Git:ssh: connect to host github.com port 22: Connection timed out 问题的三种方案

1、问题描述&#xff1a; 其一、整体提示为&#xff1a; ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 中文为&#xff1a; ssh&#xff1a;连接到主机 github.com 端口 22&#xff1a;连接超时 fatal&a…

linux服务器ssh连接慢问题处理

一、 可能导致慢的几个原因 1、网络问题&#xff1a;网络延迟、带宽限制和包丢失等网络问题都有可能导致SSH连接变慢。 2、客户端设置&#xff1a;错误的客户端设置&#xff0c;如使用过高的加密算法或不适当的密钥设置&#xff0c;可能导致SSH连接变慢。 3、服务器负载过高…