卡码网 46携带研究材料 LeetCode 416分割等和数组 1049最后一块石头的重量-ii | 代码随想录25期训练营day42、43

动态规划算法4

卡码网 46 携带研究材料 2023.12.6

  • 题目链接
  • 常规二维dp数组方法代码随想录讲解[链接]
  • 一维滚动数组方法代码随想录讲解[链接]
    在这里插入图片描述
//二维dp数组做法
#include<bits/stdc++.h>
using namespace std;int main()
{//m为材料种类数,n为行李箱最大空间数int m, n;cin >> m >> n;//room数组存储m种材料所占的体积vector<int> room(m, 0);for(int i = 0; i < m; i++)cin >> room[i];//value数组存储m种材料所占的价值vector<int> value(m, 0);for(int i = 0; i < m; i++)cin >> value[i];//1确定动态规划dp数组及其下标含义,这里指第(1, m)种材料(对应索引0,m-1)在占用(0, n)体积时的价值vector<vector<int>> dp(m, vector<int>(n+1, 0));//3初始化,存储第一种材料的价值,背包体积大于room[0]时,背包的价值为value[0]//下面是两种初始化方法for(int i = room[0]; i <= n; i++){dp[0][i] = value[0];}// for(int i = 1; i < n; i++)// {//     if(room[0] <= i)//         dp[0][i] = value[0];// }//2确定递推公式 4 确定递推遍历顺序for(int i = 1; i < m; i++){for(int j = 1; j <= n; j++){//当背包体积不够时,不装第i种材料,此时最大价值为dp[i-1][j]背包的价值if(room[i] > j)dp[i][j] = dp[i-1][j];//当背包体积够时,取价值最大值,不装第i种材料的价值,装第i种材料的价值+背包剩余体积装材料的最大价值elsedp[i][j] = max(dp[i-1][j],dp[i-1][j-room[i]]+value[i]);}}//dp[m-1][n]表示m种材料装在n体积背包的最大价值cout << dp[m-1][n] << endl;return 0;
}
//一维dp数组做法(滚动数组)
#include<bits/stdc++.h>
using namespace std;int main()
{//m为材料种类数,n为行李箱最大空间数int m, n;cin >> m >> n;//room数组存储m种材料所占的体积vector<int> room(m, 0);for(int i = 0; i < m; i++)cin >> room[i];//value数组存储m种材料所占的价值vector<int> value(m, 0);for(int i = 0; i < m; i++)cin >> value[i];//1确定动态规划dp数组及其下标含义,这里指占用[0, n]体积时的价值vector<int> dp(n+1, 0);//3初始化,存储第一种材料的价值,背包体积大于room[0]时,背包的价值为value[0]//2确定递推公式 4 确定递推遍历顺序//遍历m种材料for(int i = 0; i < m; i++){//倒序遍历[room[i], j]体积下的最大价值//不能用正序遍历,否则dp[2]会重复dp[1]for(int j = n; j >= room[i]; j--){//递推公式,取两者最大值//dp[j](前面遍历的该体积下的最大价值),//dp[j-room[i]]+value[i],j-room[j]空间大小下的最大价值+第i种材料的价值dp[j] = max(dp[j], dp[j-room[i]]+value[i]);}}//dp[n]表示n体积背包的最大价值cout << dp[n] << endl;return 0;
}

LeetCode 416 分割等和数组 2023.12.6

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
bool canPartition(vector<int>& nums) {//sum存储nums数组的总和int sum = 0;// for (int i = 0; i < nums.size(); i++)//     sum += nums[i];//求和或拼接函数(迭代器,迭代器,累加值i),sum=数组和+isum = accumulate(nums.begin(), nums.end(), 0);cout << sum << endl;//先判断和是否为偶数,如果不是则不能分为两个等和数组,直接返回falseif(sum%2 == 1)return false;//和为偶数时,两个等和数组的和目标值为一半和int target = sum/2;//1确定dp数组,其下标含义为当前背包下的最大子数组和,3初始化元素都为0//因为数组元素最大值100,数组大小最大为100,那么最大target为10000vector<int> dp(10001, 0);//2确定递推公式,4确定遍历顺序,数组中每个元素只使用一次,那么倒序遍历for (int i = 0; i < nums.size(); i++){//j为背包的大小,需要大于当前遍历值for(int j = target; j >= nums[i]; j--)//取极大值:判断之前遍历的元素在背包j值时的最大元素和与加入该值后的最大元素和dp[j] = max(dp[j], dp[j-nums[i]]+nums[i]);}//最终判断条件,在能存储数值为target的背包内值为target时,说明能分为两个等和数组if(dp[target] == target)return true;return false;
}

LeetCode 1049 最后一块石头的重量-ii 2023.12.6

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int lastStoneWeightII(vector<int>& stones) {//sum存储石头总重量int sum = accumulate(stones.begin(), stones.end(), 0);//target存储一半石头总重量,当总重量为奇数时,2*target<sumint target = sum/2;//1确定dp数组,其下标含义为能存储重量为i的背包最大能存储石头重量//本题中想把石头分为重量相同或者相近的两堆,这样最后剩下的石头重量为0或者最小//3初始化元素均为0vector<int> dp(target+1, 0);//2确定递推公式,4确定遍历顺序//计算重量为i的背包最大能存储石头重量,每块石头只能用一次所以倒序遍历for (int i = 0; i < stones.size(); i++){//j为背包的大小,需要大于当前遍历重量值for(int j = target; j >= stones[i]; j--)//取极大值:判断之前遍历的元素在背包j值时的最大重量和与加入该重量值后的最大重量和dp[j] = max(dp[j], dp[j-stones[i]]+stones[i]);}//能存储target一半总重量的背包最多能存储target重量或者更少//sum-dp[target]为另一堆更多的重量,减掉dp[target]即为最小重量;相同时答案为0return sum - dp[target] - dp[target];
}

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

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

相关文章

如何使用 Zotero 导出所选条目的 PDF 文件

如何使用 Zotero 导出所选条目的 PDF 文件 Zotero 是一款强大的参考文献管理工具&#xff0c;但它并不直接提供将整个文件夹导出为 PDF 的选项。不过&#xff0c;您可以使用以下步骤来导出您所选的 Zotero 条目中的 PDF 文件&#xff0c;无需额外的插件。 选择所需的 Zotero 条…

智能优化算法应用:基于鹰栖息算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鹰栖息算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鹰栖息算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鹰栖息算法4.实验参数设定5.算法结果6.参考文献7.…

【华为数据之道学习笔记】3-1 基于数据特性的分类管理框架

华为根据数据特性及治理方法的不同对数据进行了分类定义&#xff1a;内部数据和外部数据、结构化数据和非结构化数据、元数据。其中&#xff0c;结构化数据又进一步划分为基础数据、主数据、事务数据、报告数据、观测数据和规则数据。 对上述数据分类的定义及特征描述。 分类维…

Spring Boot 项目的创建、配置文件、日志

文章目录 Spring Boot 优点创建 Spring Boot 项目创建项目认识目录网页创建&#xff08;了解&#xff09; 约定大于配置Spring Boot 配置文件配置文件格式读取配置项properties 配置文件yml 配置文件基本语法进阶语法配置对象配置集合yml 设置不同环境的配置文件 Spring Boot 日…

C语言之联合和枚举

C语言之联合和枚举 文章目录 C语言之联合和枚举1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 结构体和联合体对比1.4 联合体大小的计算1.5 联合体小练习 2. 枚举2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用 1. 联合体 1.1 联合体的声明 像结构体⼀样&#xff…

10-tornado项目部署

1. python3的安装和配置 1.1 安装系统依赖包 sudo dnf install wget yum-utils make gcc openssl-devel bzip2-devel libffi-devel zlib-devel -y1.2 下载Python wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz1.3 解压 tar xzf Python-3.9.5.tgz 1.4 安装…

HarmonyOS4.0从零开始的开发教程04 初识ArkTS开发语言(下)

HarmonyOS&#xff08;二&#xff09; 初识ArkTS开发语言&#xff08;下&#xff09;之TypeScript入门 声明式UI基本概念 应用界面是由一个个页面组成&#xff0c;ArkTS是由ArkUI框架提供&#xff0c;用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程&#xff…

C练习题13

单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 1.结构化程序由三种基本结构组成、三种基本结构组成的算法是() A.可以完成任何复杂的任务 B. 只能完成部分复杂的任务 C. 只能完…

绘图 Seaborn 10个示例

绘图 Seaborn 是什么安装使用显示中文及负号散点图箱线图小提琴图堆叠柱状图分面绘图分类散点图热力图成对关系图线图直方图 是什么 Seaborn 是一个Python数据可视化库&#xff0c;它基于Matplotlib。Seaborn提供了高级的绘图接口&#xff0c;可以用来绘制各种统计图形&#xf…

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机图像保存到电脑内存的技术背景代码分析注册SDK回调函数BufferEvent声明可以存储相机图像的内存序列和名称在图像回调函数中将图像保存在内存序…

华为配置流量抑制示例

如拓扑图所示&#xff0c;SwitchA作为二层网络到三层路由器的衔接点&#xff0c;需要限制二层网络转发的广播、未知组播和未知单播报文&#xff0c;防止产生广播风暴&#xff0c;同时限制二三层网络转发的已知组播和已知单播报文&#xff0c;防止大流量冲击。 配置思路 用如下…

利用STM32内置Bootloader实现USB DFU固件升级

本文将介绍如何利用STM32内置的Bootloader来实现USB DFU&#xff08;Device Firmware Upgrade&#xff09;固件升级功能。首先&#xff0c;我们会介绍USB DFU的原理和工作流程。然后&#xff0c;我们将详细讲解如何配置STM32芯片以支持USB DFU&#xff0c;并提供相应的代码示例…

MySQL授权密码

mysql> crate databases school charcter set utf8; Query OK, 1 row affected, 1 warning (0.00 sec) 2.在school数据库中创建Student和Score表 mysql> use school Database changed mysql> create table student-> -> (id int(10) primary key auto_incremen…

介绍几个有意思的 GitHub 仓库

大家好&#xff0c;我是风筝。 今天介绍几个很有意思的 github 开源项目&#xff0c;看过之后就会发现&#xff0c;github 果然深意暗藏。 GitHub对于程序员来说&#xff0c;再熟悉不过了&#xff0c;绝大多数时候&#xff0c;我们到上面都是为了学习高质量的源代码&#xff…

深信服技术认证“SCSA-S”划重点:XSS漏洞

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…

Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

docker 的初步认识,安装,基本操作

docker相关知识 docker的相关概念 docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源。 docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的linux服务器&#xff0c;也可以实现虚拟…

初级数据结构(二)——链表

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;一&#xff09;——顺序表 | NULL 下一篇-> 1、链表特征 与顺序表数据连续存放不同&#xff0c;链表中每个数据是分开存放的&#xff0c;而且存放的位置尤其零散&#…

Django回顾 - 6 Ajax

【1】Ajax 定义&#xff1a; 异步Javscript和XML 作用&#xff1a; Javascript语言与服务器(django)进行异步交互&#xff0c;传输的数据为XML&#xff08;当然&#xff0c;传输的数据不只是XML,现在更多使用json数据&#xff09; 同步交互和异步交互&#xff1a; 1、同步交互&…

如何解决syntaxerror: more than 255 arguments 报错

如何解决syntaxerror: more than 255 arguments 报错 问题背景解释解决方案 问题背景 今天拼接特征的时候&#xff0c;突然代码报错syntaxerror: more than 255 arguments &#xff0c;看了一下感觉这个报错非常有意思&#xff0c;估计平时也是没机会碰到&#xff0c;和大家分…