416. 分割等和子集

问题的另一种表述:

给定一个数组nums,判断是否可以从数组中选出一些数,使得这些数之和等于元素和的一半。

此问题为01背包问题

该问题的一般描述为;能否选择若干物品,使它们刚好放满一个容量为t的背包

(若物品只有一个,则为01背包问题;若每个物品的个数有限,则为多重背包问题;若每个物品个数无限,则为完全背包问题)

dp[i][j]:能否从前i个物品中(物品编号为0~i-1)中选择若干物品“恰好”放满容量为j的背包。

考虑第i个数取不取:

dp[i][j]=dp[i-1][j]  || dp[ i-1 ][ j- nums[i] ]

空间优化:

for i 0~n-1:

for j sum/2~nums[i]:

dp[j]=dp[j]||dp[j-nums[i]]

初始化:

dp[i]=false,dp[0]=true

剪枝:

如果sum为奇数,则直接返回false

class Solution {
public:
int dp[200001];
int sum(vector<int>nums)
{int res=0;for(int i=0;i<nums.size();i++){res+=nums[i];}return res;
}bool canPartition(vector<int>& nums) {
int s=sum(nums);
if(s%2==1)return false;
memset(dp,false,sizeof(dp));
dp[0]=true;
for(int i=0;i<nums.size();i++)
{for(int j=s/2;j>=nums[i];j--){dp[j]=dp[j]||dp[j-nums[i]];}
}
return dp[s/2];}
};

【动态规划笔记】01背包问题:leetcode415 分割等和子集相关推荐

  1. 有趣的0-1背包问题:分割等和子集

    Q:给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, ...

  2. 力扣刷题-python-动态规划-1 (动态规划、01背包问题、完全背包问题)

    文章目录 1.动态规划 2.简单和中等题 3.01背包问题基础 4.01背包问题 5.完全背包 6.总结 1.动态规划 动态规划 是由前一个状态推导出 贪心算法 是直接取局部最优 动态规划需要直到状态 ...

  3. 经典动态规划:0-1 背包问题

    经典动态规划:0-1 背包问题 文章目录 经典动态规划:0-1 背包问题 一.题目描述 二.动规标准套路 三.题目描述 四.解法分析 五.优化 一.题目描述 就讨论最常说的 0-1 背包问题,简单描述 ...

  4. 背包问题动态规划matlab,01背包问题动态规划详解

    计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...

  5. o-1背包问题迭代_经典动态规划:01背包问题的变体

    点击上方蓝字设为星标 东哥带你手把手撕力扣~ 作者:labuladong   公众号:labuladong 若已授权白名单也必须保留以上来源信息 上篇文章 经典动态规划:0-1 背包问题 详解了通用的 ...

  6. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析

    // 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...

  7. 动态规划解决0-1背包问题详解(图文并茂)

    动态规划解决0-1背包问题 这个是网上比较好的案例,因为原文有些地方晦涩难懂,对于刚接触动态规划问题的朋友来说很不友好,所以很对地方加入了我自己的见解,也是作为我的一次学习历程. 一.问题描述: 有n ...

  8. 1008-----算法笔记----------0-1背包问题(动态规划求解)

    1.问题描述 给定n种物品和一个背包,物品i的重量是wi,其价值为vi,背包的容量为C.问:应该如何选择装入背包的物品,使得装入背包中物品的总价值最大? 2.问题分析 上述问题可以抽象为一个整数规划问 ...

  9. 动态规划:01背包问题例题(leetcode+cpp实现)

    文章目录 分割等和子集 最后一块石头的重量 前情回顾: 动态规划(4):01背包问题详解 分割等和子集 力扣传送门: https://leetcode.cn/problems/partition-eq ...

最新文章

  1. 用Leangoo思维导图管理OKR,目标管理
  2. Java如何打印异常的堆栈?
  3. c#输出一个平行四边形_如果Java 和 C# 同时出现,生态也差不多,你选择谁?
  4. 整数大小比较(信息学奥赛一本通-T1043)
  5. GirlsInAI 近期计划,求扩散,欢迎大家转起来!
  6. 达内java1707第一阶段_达内Java就业班学习路线图(附视频教程)
  7. 从零开始配置 vim(3)—— 键盘映射进阶
  8. java读取gpx文件格式,Gpx文件基本格式及常见错误——乱码
  9. TracePro小白学习操作
  10. OPENWRT:编译E8820V2总结
  11. 程序员进阶必备--写文档
  12. 用python写生日快乐说说_生日快乐的说说(精选50句)
  13. 中国 / 省市区县 / 四级联动 / 地址选择器(京东商城地址选择)
  14. DOM初探(14)——查看滚动条的滚动距离
  15. 网络资源计算机教学设计,第11课 网络资源任我搜 教案
  16. 【财富空间】华为HR总裁李杰:如何打造一支胜任的项目经理队伍?
  17. 从数据可视化模板,到数据分析方案,都整理给你了!
  18. js通过IP地址获取所在城市
  19. 如画的水乡,如画的同里58
  20. 斑马条纹是为了驱散舌蝇和马蝇

热门文章

  1. Python2.5.4移植到arm-linux
  2. HDU1320 ZOJ1201 Inversion【水题】
  3. Bailian3256 矩阵的乘法【数学计算】
  4. CCF NOI1003 猜数游戏
  5. UVA156 Ananagrams【map+vector】
  6. 自然语言处理(NLP)书籍、项目、视频资源清单
  7. 图灵机(Turing Machine)
  8. 生活中的数学 —— 几何
  9. 逻辑学 —— 复杂问题谬误
  10. hadoop 命令行相关操作