【代码随想录算法训练营第34天】动态规划part03 | 01背包问题 二维 | 01背包问题 一维 | 416. 分割等和子集
文章目录KEY1语法1 如何初始化二维数组2 数组求和用 accumulate(v.begin(), v.end(), 0);2学会把问题理解成01背包问题的形式然后用01背包的套路去解决01背包问题 二维整个代码01背包问题 一维整个代码416. 分割等和子集思路整个代码KEY1语法1 如何初始化二维数组intm3,n4;// 创建一个 3 行 4 列的二维 vector全部元素初始化为 0vectorvectorintdp(m,vectorint(n,0));// 如果想全部初始化为 -1 或其他值vectorvectorintdp(m,vectorint(n,-1));2 数组求和用accumulate(v.begin(), v.end(), 0);accumulate(v.begin(),v.end(),0);2学会把问题理解成01背包问题的形式然后用01背包的套路去解决01背包问题 二维别看卡尔的视频看算法课本上的说法即可两个都对但是数组大小定义不太一样别搞混了这是课本注意红框两个部分即可整个代码#includebits/stdc.husing namespace std;intmain(){intm,n;cinmn;vectorintw(m);vectorintv(m);for(inti0;im;i){cinw[i];}for(inti0;im;i){cinv[i];}vectorvectorintdp(m1,vectorint(n1,0));for(inti0;im1;i){dp[i][0]0;}for(inti0;in1;i){if(iw[0]){dp[0][i]0;}else{dp[0][i]0;}}for(inti1;im1;i){for(intj1;jn1;j){if(w[i-1]j)dp[i][j]dp[i-1][j];else{dp[i][j]max(dp[i-1][j],dp[i-1][j-w[i-1]]v[i-1]);}}}coutdp[m][n];}01背包问题 一维核心把原来的二维数组换成只有一行的一维数组节省空间注意这一行是从后往前遍历因为下图整个代码#includebits/stdc.husing namespace std;intmain(){intm,n;cinmn;vectorintw(m);vectorintv(m);for(inti0;im;i){cinw[i];}for(inti0;im;i){cinv[i];}// vectorvectorint dp(m1,vectorint(n1,0));vectorintdp(n1,0);for(inti1;im1;i){for(intjn;j0;j--){if(w[i-1]j)dp[j]dp[j];else{dp[j]max(dp[j],dp[j-w[i-1]]v[i-1]);}}}coutdp[n];}416. 分割等和子集关键在于问题建模思路题意把数组划分成两个子集是左边这样而不是右边这样所以相当于找到这个数组的一个子集让其和等于数组之和的 1 / 2这样剩下的其他数之和也为数组之和的 1 / 2⇒ 相当于一个01背包问题需要找到合适的物品组合让其和为数组之和的 1 / 2注意与01背包相比背包问题中的weight[],value[]在这里都为nums[]注 但是这样做虽然通过了但是耗时多carl网用的是一维数组等方法。如果需要提速可去看我目前没看。整个代码class Solution{public:boolcanPartition(vectorintnums){intsizenums.size();intc;caccumulate(nums.begin(),nums.end(),0);if(c%21)returnfalse;else{cc/2;}vectorvectorintdp(size1,vectorint(c1,0));for(inti1;isize1;i){for(intj1;jc1;j){if(nums[i-1]j)dp[i][j]dp[i-1][j];else{dp[i][j]max(dp[i-1][j],dp[i-1][j-nums[i-1]]nums[i-1]);}}}if(dp[size][c]c)returntrue;returnfalse;}};第九章 动态规划part03正式开始背包问题背包问题还是挺难的虽然大家可能看了很多背包问题模板代码感觉挺简单但基本理解的都不够深入。如果是直接从来没听过背包问题可以先看文字讲解慢慢了解 这是干什么的。如果做过背包类问题可以先看视频很多内容是自己平时没有考虑到位的。背包问题力扣上没有原题大家先了解理论今天就安排一道具体题目。详细布置01背包问题 二维https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html视频讲解https://www.bilibili.com/video/BV1cg411g7Y601背包问题 一维https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-2.html视频讲解https://www.bilibili.com/video/BV1BU4y177kY分割等和子集本题是 01背包的应用类题目https://programmercarl.com/0416.%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.html视频讲解https://www.bilibili.com/video/BV1rt4y1N7jE

相关新闻

Qwen3.6 Plus技术预览版评测:代码生成与复杂任务规划

Qwen3.6 Plus技术预览版评测:代码生成与复杂任务规划

1. Qwen3.6 Plus技术预览版深度评测最近在AI开发圈里,Qwen3.6 Plus的技术预览版(preview)引起了广泛讨论。作为一个长期跟踪大模型技术演进的技术博主,我第一时间拿到了测试权限,经过两周的密集使用后,确实…

2026/7/24 23:45:29 阅读更多 →
AI如何提升学术写作效率:智能工具实战解析

AI如何提升学术写作效率:智能工具实战解析

1. 学术写作的痛点与AI解决方案去年帮同事修改一篇SCI论文时,我数了数邮件往来记录——前后经历了17次修改,从语言润色到格式调整,耗时整整三个月。这让我意识到,传统学术写作流程存在严重效率瓶颈。直到接触了书匠策AI这类智能写…

2026/7/24 23:45:29 阅读更多 →
阿里云百炼大模型平台:企业级AI应用一站式解决方案

阿里云百炼大模型平台:企业级AI应用一站式解决方案

1. 百炼大模型平台概述阿里云百炼大模型服务平台是面向企业级AI应用的一站式解决方案,它整合了从模型训练到推理部署的全流程工具链。作为阿里云AI体系的核心组件,百炼平台支持包括自然语言处理、计算机视觉、多模态在内的多种大模型框架,显著…

2026/7/24 23:45:29 阅读更多 →

最新新闻

5分钟实现Windows与iPhone无缝文件传输:AirDropPlus完整指南

5分钟实现Windows与iPhone无缝文件传输:AirDropPlus完整指南

5分钟实现Windows与iPhone无缝文件传输:AirDropPlus完整指南 【免费下载链接】AirDropPlus Effortless file transfer and clipboard sync between Windows and iOS — powered by Python and Apple Shortcuts. 项目地址: https://gitcode.com/gh_mirrors/ai/AirD…

2026/7/24 23:53:32 阅读更多 →
数据库性能优化:从 SQL 到硬件调优完全指南

数据库性能优化:从 SQL 到硬件调优完全指南

写在前面&#xff1a;作为一名在大厂摸爬滚打多年的运维老兵&#xff0c;我见过太多因为数据库性能问题导致的生产事故。今天分享一套完整的数据库优化方法论&#xff0c;从SQL层面到硬件配置&#xff0c;帮你彻底解决性能瓶颈&#xff01;<br/> 为什么数据库优化如此重要…

2026/7/24 23:53:32 阅读更多 →
【WorkBuddy从入门到精通实战教程】实战案例 第 17 章 会议结束不是终点,工作才刚刚开始

【WorkBuddy从入门到精通实战教程】实战案例 第 17 章 会议结束不是终点,工作才刚刚开始

日常办公为什么总在重复搬运 很多办公室的一天由同一组动作组成:约会议、找材料、开会、记笔记、发纪要、建待办、追进度、写周报、做汇报。每个动作看似不难,真正消耗精力的是信息不断从聊天、会议、邮件、文档和表格之间流转,而且每流转一次都可能丢掉上下文。 会前目标…

2026/7/24 23:53:32 阅读更多 →
数据库参数调优实战手册:基于服务器硬件配置的参数优化操作

数据库参数调优实战手册:基于服务器硬件配置的参数优化操作

数据库参数是连接硬件资源与业务负载的 “桥梁”&#xff0c;其配置合理性直接决定数据库性能上限。无论是 MySQL 的 my.cnf&#xff08;或 my.ini&#xff09;还是 Oracle 的 init.ora&#xff08;或 spfile&#xff09;&#xff0c;参数设置都需与服务器硬件配置&#xff08;…

2026/7/24 23:53:32 阅读更多 →
【Autosar从入门到精通到进阶实战篇】85 刷写安全:如何防止固件被逆向与篡改?

【Autosar从入门到精通到进阶实战篇】85 刷写安全:如何防止固件被逆向与篡改?

85 刷写安全:如何防止固件被逆向与篡改? 老伙计,还记得上篇我们聊的刷写可靠性吗?你成功让ECU在掉电、断网、甚至被熊孩子拔线的情况下都能自动恢复,心里正美滋滋吧? 但别急,我上周就被一个血淋淋的教训打脸了——客户的一批T-Box(车载远程通信终端)在售后刷写时,被…

2026/7/24 23:53:32 阅读更多 →
Redis客户端-Java

Redis客户端-Java

1. Redis协议-RESP1.1 认识协议为什么可以编写出一个自定义的Redis客户端&#xff1f;网络通信中会有很多的“协议”除了应用层协议&#xff0c;以下的协议都是固定好的&#xff0c;是在系统内核或者驱动程序中实现的&#xff0c;我们无法修改关于应用层&#xff0c;业界有很多…

2026/7/24 23:52:31 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化&#xff0c;核心特色&#xff1a;三维 X/Y/Z 三轴空间&#xff0c;所有散点分布在 0~10 立方体空间内&#xff1b;散点使用径向渐变实现立体 3D 圆球质感&#xff1b;支持鼠标 / 触屏拖拽画布&#xff0c;…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls&#xff1a;进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值&#xff0c;并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好&#xff0c;我是一名编程初学者&#xff0c;同时这也是我编程学习之路上的第一篇博客。在这里&#xff0c;我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手&#xff0c;目前在学习c语言&#xff0c;我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻