代码随想录 -- day42 -- 01背包问题、416. 分割等和子集

【论文+CAD图纸】光储充一体化微电网设计 近些年来,我国的经济发展迅速,对能源的需求不断增长,也加重了对环境的破坏,违背了我国的可持续发展战略。所以迫切需要寻找新型能源。由于太阳能在使用时不会产生污染,所以太阳能逐渐受到人们的重视。我国的太阳能资源丰富,具有的开发利用潜力。特别是近些年“光储充”一体化充电站为高科技绿色充电模式,“以光养桩”使光伏、储能、智能充电协同,智能微电网与公共电网互动,本设计对探索清洁可再生能源在民用场合的应用,有着重大的理论和工程价值。本文综述国内外相关光伏发电的成果和发展现状; 阅读详情

01背包问题

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大


416. 分割等和子集

思路:

前提条件:

我们要求的是让两边子集相等

  • 背包的体积为sum / 2
  • 背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值
  • 背包如果正好装满,说明找到了总和为 sum / 2 的子集。
  • 背包中每一个元素是不可重复放入。

动态规划:

1、确定dp数组及下标含义

dp[j] 是容量为j的背包,所背的最大价值

2、确定递归公式

dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);

3、dp数组如何初始化

因为题目中nums[i]是大于等于1 的 所以dp[0]是不会有结果的,所以dp[0] = 0

4、确定遍历顺序

如果使用一维dp数组,物品遍历的for循环放在外层,遍历背包的for循环放在内层,且内层for循环倒序遍历!

5、举例

class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum = 0;

        // dp[i]中的i表示背包内总和
        // 题目中说:每个数组中的元素不会超过 100,数组的大小不会超过 200
        // 总和不会大于20000,背包最大只需要其中一半,所以10001大小就可以了
        vector<int> dp(10001, 0);
        for (int i = 0; i < nums.size(); i++) {
            sum += nums[i];
        }
        // 也可以使用库函数一步求和
        // int sum = accumulate(nums.begin(), nums.end(), 0);
        if (sum % 2 == 1) return false;
        int target = sum / 2;

        // 开始 01背包
        for(int i = 0; i < nums.size(); i++) {
            for(int j = target; j >= nums[i]; j--) { // 每一个元素一定是不可重复放入,所以从大到小遍历
                dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
            }
        }
        // 集合中的元素正好可以凑成总和target
        if (dp[target] == target) return true;
        return false;
    }
};

东方财富个股实时行情爬虫实战:从入门到精通,手把手教你构建股票数据采集系统 在量化投资、股市分析和数据挖掘等领域,获取实时、准确的股票行情数据是第一步也是至关重要的一步。东方财富网作为国内最大的财经门户网站之一,提供了丰富的股票数据和实时行情接口。本文将带你从零开始,构建一个完整的东方财富个股实时行情爬虫系统,涵盖股票代码遍历、JSON接口分析、反爬虫策略应对、数据持久化存储等核心技术点。目录前言一、项目背景与目标1.1 为什么要爬取东方财富数据?1.2 项目目标1.3 技术栈二、接口分析与逆向工程2.1 寻找真实数据接口2.2 简化接口2.3 字段含义对照表三、股票代码获取。 阅读详情

相关推荐

逆向选择启示录:一个失败高频策略如何意外跑赢市场

本文探讨了高频交易中的逆向选择现象,揭示了一个失败的高频策略如何通过简化意外跑赢市场。通过加密货币市场的实证分析和蒙特卡洛模拟,研究发现低预测性的简单策略反而更具鲁棒性,有效规避了逆向选择风险。文章还提供了小币种做市策略的优化框架和实践建议,为量化交易者提供了宝贵洞见。

weixin_29191669的博客 401

代码随想录算法训练营 day42 || 01背包问题,416. 分割等和子集

思路:在拿到这道题目时,其实第一想法是回溯,去不断试错当前的子集和;但回溯的时间复杂度必定是指数级,大概率会超时。其次想到贪心,走动态规划,因为这是一个不断加入元素尝试的过程,所以是动规。那么再看分割子集,其实也是一个不断加入元素从一个集合至另一个集合的过程,所以可以视作背包问题,并且每个元素可以取一次,所以是01背包问题,下面需要处理的就是动态规划,我们的目标是操作数组和,所以和就是本题所理解的重量,以物品数和数组和作为两个维度构建数据即可求解。

旭 607

OpenSpec 从入门到精通:AI 时代的最佳 SDD 范式

同样都是「先写规范再写代码」的开源 SDD 框架,OpenSpec(https://github.com/fission-ai/openspec) 展现出了极高的工程性价比,无论是使用 Claude Code、Cursor 还是 Aider,都可以无缝接入 OpenSpec 的规格管理层。这些问题需要人来做判断,AI 做不了这个主。整个流程跑下来,OpenSpec 产出的效果还是令人满意的,一些前期没有考虑到的细节 AI 都补上了,生成的相关文档也有利于开发人员的知识对齐,可以尝试在团队内部推广。

qq_39093474的博客 926

代码随想录day42|动态规划 01背包问题416. 分割等和子集

学习记录

rogue1207的博客 328

AI量化交易工作台Vibe-Trading:用自然语言驱动策略回测与多智能体研究

量化交易通过数学模型和计算机程序执行投资决策,其核心在于将市场规律转化为可验证的策略。传统量化开发涉及数据获取、策略编写、回测验证等复杂工程,对非编程背景的从业者构成较高门槛。随着大语言模型技术的发展,自然语言交互正成为降低技术使用难度的关键。Vibe-Trading项目正是这一趋势的实践,它将金融工程任务封装为可调用的工具与技能,允许用户通过自然语言指令直接驱动策略回测、因子研究和投资组合分析。其技术价值在于构建了一个模块化的AI Agent框架,通过ReAct推理框架协调多个专项技能,并创新性地引入多智

weixin_28695161的博客 1566

海康H304NAS 刷机飞牛

本文旨在分享如何将闲置的海康威视H304 NAS刷入飞牛NAS系统,并利用iStoreOS作为安装媒介。之前因为使用极空间NAS,这台H304闲置已久。最近尝试了飞牛NAS,在虚拟机上安装后挂载极空间的电影资源,体验不错,于是决定重新折腾这台H304。我个人喜欢尝试新系统,之前经常更新H304的固件,但设备总在使用一两年后出现故障,需要联系技术清理日志才能恢复。最后一次设备“变砖”后,连技术人员也联系不上了,自己尝试修复未果,设备就此闲置两三年。

u012985257的博客 2747

代码随想录Day42|01背包问题,你该了解这些、01背包问题,你该了解这些! (滚动数组)、416.分割等和子集

01背包问题,你该了解这些、01背包问题,你该了解这些! (滚动数组)、416.分割等和子集

weixin_46620779的博客 791

CATIA二次开发实战:我用VBA写了个BOM表自动导出工具,效率提升80%

本文详细介绍了如何利用VBA进行CATIA二次开发,构建BOM表自动导出工具的全过程。通过智能解析算法、异常处理机制和性能优化技巧,该工具将BOM表生成时间从2.5小时缩短至8分钟,效率提升80%。文章还探讨了与PDM系统集成和定制化报告生成等扩展应用,为机械设计工程师提供了实用的自动化解决方案。

weixin_33709590的博客 555

代码随想录算法训练营 day42 | 01背包问题、416. 分割等和子集

递推公式:比较当前物品i 在当前容量j下是放入背包 的价值更大 还是不放入背包的价值更大。dp[i][j]表示从0-i的物品里任意取,放进容量为j的背包,价值总和最大是多少。初始化需要初始化dp[0][j]和dp[j][0]因为每次遍历都需要左上角的信息。暴力的解法可以用回溯, 它是2^n指数级别的时间复杂度,所以需要用动态规划优化。d[i][j]表示第0-i个商品,放入容量为j的背包的最大价值。只能先遍历物品后背包,且背包容量需要倒叙遍历。物品的价值是数组内元素。物品的体积是数组内元素。

qq_42591713的博客 240

keil内无法打开ccs图形编程,弹框提示:无法加载一下来源的扩展程序:C:\...清单文件缺失或不可读取,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1377

【2025年华为秋招(AI)-11月19日-第二题(200分)- 终端款型聚类识别】(题目+思路+Java&C++&Python解析+在线测试)

该摘要总结了题目要求、输入输出格式、KMeans算法的实现步骤以及关键点。以下是150字内的摘要: 本文提出基于KMeans算法对终端型号进行聚类的方法。通过包间隔时长、连接持续时长、漫游前后信号强度4个特征,使用欧氏距离度量相似度。算法采用固定初始化策略(前k个样本作为初始质心),经过分配-更新迭代,直至质心移动小于1e-8或达到最大迭代次数。最终输出各簇样本数并按升序排列,解决了终端型号自动分类问题。示例显示该方法能有效识别3-4类终端,并准确统计每类数量。

m0_73659489的博客 141

代码随想录算法训练营 day42 |01背包问题、01背包问题——滚动数组、416. 分割等和子集

在一维dp数组中,dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j]。

weixin_42179093的博客 208

基于STM32设计的心率脉搏测量仪(项目资料ID:9)

本设计基于STM32F103单片机开发了一款便携式心率脉搏测量仪,通过光电传感器采集脉搏信号,经放大(约1200倍)、滤波(低通及四阶低通滤波)、比较及偏置电压调理后,由STM32进行ADC采样与数据处理。硬件采用Altium Designer设计,包含信号调理电路(限定心率范围43.4-800次/分钟)及电源管理模块;软件基于STM32CubeMX开发,利用队列存储和时间间隔平均算法优化精度,实现多终端显示(OLED实时心率/动画、MATLAB波形分析、蓝牙传输至手机)。系统支持自动启停(检测脉搏启

以培养嵌入式工程师为己任 1万+

代码随想录算法训练营day42 | 01背包问题,你该了解这些!,01背包问题,你该了解这些! 滚动数组 , 416. 分割等和子集

重点掌握01 背包和完全背包即可。

2301_77450803的博客 714

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

代码随想录训练营day42|01、背包问题理论基础;416、分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200。01背包的问题还需要再反复理解一下。

weixin_43561267的博客 115

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

代码随想录算法训练营day42 | 01背包问题,416. 分割等和子集

代码随想录算法训练营day42 | 01背包问题,416. 分割等和子集

超级马里奥 的博客 525

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

代码随想录day42| 01背包问题 二维、 01背包问题 一维、 416. 分割等和子集

2.物品是nums[i],重量是nums[i],价值也是nums[i],背包体积是sum/2。1.dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。3.当 dp[target] == target 的时候,背包就装满了。1.为什么必须先遍历物品后遍历背包?2.为什么必须遍历背包必须从后往前遍历?这里的if不要丢了,让我debug半天。

m0_57290240的博客 212

代码随想录算法训练营day42|01.背包问题,01.背包问题-滚动数组,416. 分割等和子集

动态规划day4

weixin_52121600的博客 215

代码随想录算法训练营day42| 01背包问题:416. 分割等和子集

01背包问题

weixin_45368277的博客 461

代码随想录算法训练营day42 | 01背包问题(一),01背包问题(二), 416. 分割等和子集

01背包

jzh013的博客 375

代码随想录Day42 | 01背包问题| 416. 分割等和子集

接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。我编写的是通用的模板,如果每件物品限定了使用次数的时候,修改k的限制即可。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一行两个整数,N,V,,用空格隔开,分别表示物品数量和背包容积。有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。输出一个整数,表示最大价值。

white_0629的博客 193

【代码随想录刷题笔记 Day 42】01背包问题,你该了解这些 | 01背包问题,你该了解这些! 滚动数组 | 416. 分割等和子集

01背包问题,你该了解这些01背包问题,你该了解这些01背包问题,你该了解这些!滚动数组416. 分割等和子集。

m0_48857323的博客 219

Day42代码随想录动态规划part04:01背包问题的二维数组解法、01背包问题的一维数组解法、416. 分割等和子集

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。

Estrellazhu的博客 709

代码随想录算法训练营Day 42| 动态规划part04 | 01背包问题理论基础I、01背包问题理论基础II、416. 分割等和子集

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。

m0_51759998的博客 545

代码随想录算法训练营 Day 42 | 01背包问题,你该了解这些!,01背包问题,你该了解这些! 滚动数组,416.分割等和子集

【代码】代码随想录算法训练营 Day 42 | 01背包问题,你该了解这些!,01背包问题,你该了解这些!滚动数组,416.分割等和子集。

MisakaMirai的博客 132

代码随想录训练营Day42动态规划Part04|01背包问题|416. 分割等和子集

0-1背包问题基础理论 0-1背包:n种物品,每种物品仅有一个,每个物品都有自己的重量w和价值v,有个容量限重为x的背包,问最多能装价值为多少的物品 完全背包:n中物品,每种物品都有无限个 题外话:暴力解法可以用回溯,时间复杂度2^n 动规五部曲: dp数组及其下标含义:dp[i,j]表示从下标为0~i的物品里任意取,放进容量为j的背包中,价值总和最大的价值量 递推公式:dp[i, j]可以从两个方向推导出来:①不放物品i时,没有更新背包中物品,价值与之前相同dp[i, j] = dp[i-1, j];

yy19991222的博客 212
上一篇: 代码随想录 -- day41 -- 343. 整数拆分 、96.不同的二叉搜索树
下一篇: 代码随想录 -- day43 -- 1049. 最后一块石头的重量 II 、494. 目标和、474.一和零
七人酒
博客等级 码龄4年 51粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值