news 2026/4/21 21:04:09

【算法日记】Day 22 动态规划专题——01背包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【算法日记】Day 22 动态规划专题——01背包

Abstract#动态规划#01背包

1. 题目

  • 题目:LeetCode 494. 目标和

2. 代码

classSolution{public:intfindTargetSumWays(vector<int>&nums,inttarget){inttotalSum=accumulate(nums.begin(),nums.end(),0);if(totalSum<abs(target)||((totalSum&1)^(target&1))==1){return0;}intsum=(totalSum+target)>>1;vector<int>dp(sum+1,0);dp[0]=1;for(autonum:nums){for(intj=sum;j>=num;--j){dp[j]+=dp[j-num];}}returndp[sum];}};

3. 心得

  • 剪枝策略:有两个剪枝方法其实很容易想到。一是target的绝对值不能超过备选数总和,否则无论如何也无法表示,返回0;二是备选数总和的奇偶性仅取决于数的绝对值,和加减操作无关,所以可以先验证target是否与备选数总和奇偶性一致,如果不一致则无法被表示,直接返回0。看似很简单的剪枝策略在题目判定时能够节省不少时间,所以今后在处理类似问题时不妨先从相反方向考虑一下,能否从显而易见的例子能够归纳出一些剪枝策略放在开头。
  • 分组思想转换成01背包问题:我想到过能否将备选数分成正负两组,只处理其中一组那么剩下一组就自然被决定了,但最后还是因为纠结于如何判断数字“是正是负”(而非“选或不选”)没有做出来。事实上,设所有正数之和为P,所有负数绝对值之和为N,则P - N = target。又因为P + N = totalSum,两式相加得2P = totalSum + target,即P = (totalSum + target) / 2。因此,问题转化为:从数组中选出若干个数(对应正号部分),使其和等于P,有多少种选法?这就是经典的01背包求方案数问题。从标答思路可以看出,如何充分利用已知信息表达**“选或不选”**这一操作,是转化成01背包问题的关键。
  • 判断奇偶性:利用&1可以快速判断是奇是偶。

4. 相关题目

  • LeetCode 1049. 最后一块石头的重量
  • bytedance-006. 夏季特惠
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 21:01:17

如何快速搭建CSDN Bot

要建立一个功能完整的 CSDN Bot&#xff0c;通常有两种主要路径&#xff1a;一是使用官方或社区提供的集成工具&#xff08;如 OpenClaw/WinClaw&#xff09;进行快速对接&#xff0c;这属于应用层部署&#xff1b;二是从零开始进行底层开发&#xff0c;通过调用 CSDN 的开放 A…

作者头像 李华
网站建设 2026/4/21 20:59:17

宿舍网速翻倍!用小米AC2100刷OpenWrt实现校园网单线多拨(附自动登录脚本)

宿舍网络加速实战&#xff1a;用OpenWrt多拨破解校园网限速 校园网限速是许多大学生共同的痛点。当你想下载大型学习资料、观看高清教学视频或与同学联机游戏时&#xff0c;缓慢的网络速度常常让人抓狂。本文将介绍一种经济高效的解决方案——通过刷写OpenWrt系统实现单线多拨&…

作者头像 李华
网站建设 2026/4/21 20:49:18

2026年03月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 2026 年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会…

作者头像 李华
网站建设 2026/4/21 20:48:19

7 种替代方案:通过蓝牙从 iPhone 传输文件到安卓手机

“我现在找不到任何能指导我在安卓和 iOS 之间传输数据的文档或示例&#xff0c;有没有能通过蓝牙完成传输的应用&#xff1f;”—— 来自苹果官方论坛 当你从 iPhone 换成安卓手机&#xff0c;却没有稳定 Wi‑Fi 或 USB 连接时&#xff0c;如何用蓝牙把 iPhone 文件传到安卓会…

作者头像 李华