代码随想录算法训练营第三十天 | 01背包问题 二维 01背包问题 一维 416. 分割等和子集

46. 携带研究材料(第六期模拟笔试)

题目描述

小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。 

小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。

输入描述

第一行包含两个正整数,第一个整数 M 代表研究材料的种类,第二个正整数 N,代表小明的行李空间。

第二行包含 M 个正整数,代表每种研究材料的所占空间。 

第三行包含 M 个正整数,代表每种研究材料的价值。

输出描述

输出一个整数,代表小明能够携带的研究材料的最大价值。

输入示例
6 1
2 2 3 1 5 2
2 3 1 5 4 3
输出示例
5
#include<bits/stdc++.h>
using namespace std;int n,bagweight;void solvation()
{std::vector<int> weight(n,0);vector<int> value(n,0);for(int i = 0 ; i < n; i++){cin >> weight[i];}for(int i = 0 ; i < n ; i++){cin >> value[i];}vector<vector<int>> dp(weight.size(),vector<int>(bagweight+1,0));for(int i = weight[0] ; i <= bagweight ; i ++){dp[0][i] = value[0];}for(int i = 1; i < weight.size() ; i++){for(int j = 0; j <= bagweight ; j ++){if(weight[i] > j) dp[i][j] = dp[i-1][j];else dp[i][j] = max(dp[i-1][j],dp[i-1][j - weight[i]]+ value[i] );}}cout << dp[weight.size() - 1][bagweight];
}int main()
{while(cin >> n >> bagweight){solvation();}return 0 ;
}

滚动数组的写法:

#include<bits/stdc++.h>
#include<vector>
using namespace std;int n ,bagweight;void solveproblem()
{std::vector<int> weight(n);vector<int> value(n);for(int i = 0; i < n; i++){cin >> weight[i];}for(int i = 0; i < n; i++){cin >> value[i];}vector<int> dp(bagweight+1,0);for(int i = 0 ; i < weight.size(); i++){for( int j = bagweight ; j >= weight[i] ; j--){if(j < weight[i]) dp[j] = dp[j-1];else dp[j] = max(dp[j],dp[j - weight[i]] + value[i]);}//注意这里不是max(dp[j-1])}cout << dp[bagweight] <<endl;
}int main()
{while(cin >> n >> bagweight){solveproblem();}return 0 ;
}

416. 分割等和子集

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

示例 1:

输入:nums = [1,5,11,5]
输出:true
解释:数组可以分割成 [1, 5, 5] 和 [11] 。

示例 2:

输入:nums = [1,2,3,5]
输出:false
解释:数组不能分割成两个元素和相等的子集
class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;vector<int> dp(20000,0);for(int i = 0 ; i < nums.size() ; i++){sum += nums[i];}if(sum%2 == 1) return false;int mid = sum/2;for(int i = 0 ; i < nums.size(); i++){for(int j = mid ; j >= nums[i] ; j--){dp[j] = max(dp[j],dp[j - nums[i]] + nums[i]);}}if(dp[mid] == mid) return true;return false;}
};

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

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

相关文章

无题:天选之子?

1. 从一个人说起&#xff1a;孤独信 原名独孤如愿&#xff0c;字期弥头云中郡&#xff08;今内蒙古自治区和林格尔县&#xff09;人&#xff0c;鲜卑族西魏、北周(南北朝)时期名将&#xff0c;八柱国之一北塞俊郎&#xff0c;容仪俊美&#xff0c;善于骑射独孤侧帽&#xff1a…

SQL语法(DQL):SELECT 多表查询之子查询

1、子查询 定义&#xff1a;如果某一个SQL语句A包含了一个查询Select语句B&#xff0c;称B叫做子查询&#xff0c;称A叫做主查询&#xff0c;A带有子查询语句目的&#xff1a;提高代码复用性&#xff0c;间接提高代码开发效率分类&#xff1a; 条件子查询&#xff1a;将子查询…

开发指南042-产生待办

整个平台待办是统一处理的&#xff0c;各业务微服务需要产生待办时调用系统API <dependency><groupId>org.qlm</groupId><artifactId>qlm-api</artifactId><version>1.0-SNAPSHOT</version> </dependency> Autowired privat…

Nature Renderer 2022(植被渲染工具插件)

渲染大量详细的植被。 自然渲染器通过替换Unity的默认地形细节和树系统来提高植被渲染的质量。一切都适用于现有数据:使用相同的草地、植被和树木,并保留现有地形。我们只是升级您的渲染器。 Unity验证的解决方案 Nature Renderer受到25000多名开发人员的信任,是Unity验证的…

Llama-2 vs. Llama-3:利用微型基准测试(井字游戏)评估大模型

编者按&#xff1a; 如何更好地评估和比较不同版本的大语言模型&#xff1f;传统的学术基准测试固然重要&#xff0c;但往往难以全面反映模型在实际应用场景中的表现。在此背景下&#xff0c;本文作者别出心裁&#xff0c;通过让 Llama-2 和 Llama-3 模型进行井字游戏对决&…

【JavaScript脚本宇宙】无处不在的JavaScript库:解析音视频处理与实时通信技术

JavaScript库大揭秘&#xff1a;音视频、互动体验与实时通信 前言 在当今互联网时代&#xff0c;JavaScript已经成为前端开发中不可或缺的一部分。随着Web技术的不断发展&#xff0c;出现了许多优秀的JavaScript库&#xff0c;为开发者提供了丰富的工具和资源。本文将介绍几个…

STM32智能机器人手臂控制系统教程

目录 引言环境准备智能机器人手臂控制系统基础代码实现&#xff1a;实现智能机器人手臂控制系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;机器人手臂管理与优化问题解决方案与优化收尾与总结 1. 引言 …

Linux系统中磁盘管理LVM与挂载

Linux系统中磁盘管理LVM与挂载 本文以属于Linux系统基本概念&#xff0c;如果以查找教程教程&#xff0c;解决问题为主&#xff0c;只需要查看本文后半部分。如需要系统性学习请查看本文前半部分。 本文操作极容易导致主机无法自动重启&#xff0c;请慎重操作。操作前务必要进…

火热夏季:浦语*书生InternLM大模型实战闯关-入门岛之Linux基础知识

一、ssh链接与端口映射并运行hello_wold.py 1.创建开发机 InternStudio创建开发机 2.进入开发机 3.Ssh链接开发机 powerShell终端ssh链接开发机。 4.创建一个hello_world.py文件web demo 5.运行web demo 6.端口映射 7.本地浏览器打开web 二、 VSCODE 远程连接开发机并创建一个…

【最强八股文 -- 计算机网络】【快速版】TCP 与 UDP 头部格式

目标端口和源端口: 应该把报文发给哪个进程包长度: UDP 首部的长度跟数据的长度之和校验和: 为了提供可靠的 UDP 首部和数据而设计&#xff0c;接收方使用检验和来检查该报文段中是否出现差错 源端口号和目的端口号: 用于多路复用/分解来自或送到上层应用的数据。告诉主机报文段…

[机器学习]-人工智能对程序员的深远影响——案例分析

机器学习和人工智能对未来程序员的深远影响 目录 机器学习和人工智能对未来程序员的深远影响1. **自动化编码任务**1.1 代码生成1.2 自动调试1.3 测试自动化 2. **提升开发效率**2.1 智能建议2.2 项目管理 3. **改变编程范式**3.1 数据驱动开发 4. **职业发展的新机遇**4.1 AI工…

数字统计

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别// 注意 while 处理多个 caseint a in.nextInt();i…

基于深度学习的点云平滑

基于深度学习的点云平滑是一种利用深度学习模型处理和优化三维点云数据以消除噪声并提升平滑度的方法。该技术在自动驾驶、机器人导航、3D重建和计算机图形学等领域有着广泛应用。以下是关于这一领域的系统介绍&#xff1a; 1. 任务和目标 点云平滑的主要任务是从带有噪声和粗…

【计算机毕业设计】基于Springboot的足球青训俱乐部管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

Day66 代码随想录打卡|回溯算法篇---分割回文串

题目&#xff08;leecode T131&#xff09;&#xff1a; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串。返回 s 所有可能的分割方案。 方法&#xff1a;本题是一个分割回文串的问题&#xff0c;是回溯算法的另一类问题。 针对一个字…

前端面试题日常练-day82 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 在Sass中&#xff0c;以下哪个功能用于创建一个混合器&#xff08;Mixin&#xff09;&#xff1f; a) include b) loop c) function d) component Sass中的嵌套规则可以帮助实现以下哪个目的&#xf…

英伟达今年在华销售额预计将达120亿美元、MiniMax创始人:三年后才会出现“杀手级”AI应用

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 1、英伟达今年在华销售额预计将达120亿美元 芯片咨询公司SemiAnalysis报告预估&#xff0c;今年英伟达有望在中国销售价值约120亿美元的人工智能芯片。黄仁勋曾表示&#xff0c;希望借助新的芯片使得…

【算法】十进制转换为二进制

目的&#xff1a;将十进制转换为二进制 思路&#xff1a; 首先我们手算的情况是通过求余数算出进制数&#xff0c;同样代码也是通过做除法和求余数的方式&#xff0c;除法是得出下一次的被除数&#xff0c;而求余数是得到进制数 代码&#xff1a; #include<stdio.h>/…

python基础语法笔记(有C语言基础之后)

input()用于输入&#xff0c;其有返回值&#xff08;即用户输入的值&#xff09;&#xff0c;默认返回字符串。括号里可放提示语句 一行代码若想分为多行来写&#xff0c;需要在每一行的末尾加上“\” 单个“/”表示数学中的除法&#xff0c;不会取整。“//”才会向下取整。 …

Qt触发paintEvent事件

常见情况下&#xff0c;paintEvent会在以下几种情况下被触发&#xff1a; 窗口初始化和显示&#xff1a; 当窗口首次被创建、显示或者窗口被覆盖、最小化后再恢复时&#xff0c;paintEvent会被触发以绘制窗口的内容。 部件大小或位置变化&#xff1a; 如果窗口或部件的大小或位…