【动态规划笔记】01背包问题:leetcode415 分割等和子集
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 分割等和子集相关推荐
- 有趣的0-1背包问题:分割等和子集
Q:给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, ...
- 力扣刷题-python-动态规划-1 (动态规划、01背包问题、完全背包问题)
文章目录 1.动态规划 2.简单和中等题 3.01背包问题基础 4.01背包问题 5.完全背包 6.总结 1.动态规划 动态规划 是由前一个状态推导出 贪心算法 是直接取局部最优 动态规划需要直到状态 ...
- 经典动态规划:0-1 背包问题
经典动态规划:0-1 背包问题 文章目录 经典动态规划:0-1 背包问题 一.题目描述 二.动规标准套路 三.题目描述 四.解法分析 五.优化 一.题目描述 就讨论最常说的 0-1 背包问题,简单描述 ...
- 背包问题动态规划matlab,01背包问题动态规划详解
计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...
- o-1背包问题迭代_经典动态规划:01背包问题的变体
点击上方蓝字设为星标 东哥带你手把手撕力扣~ 作者:labuladong 公众号:labuladong 若已授权白名单也必须保留以上来源信息 上篇文章 经典动态规划:0-1 背包问题 详解了通用的 ...
- 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
// 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...
- 动态规划解决0-1背包问题详解(图文并茂)
动态规划解决0-1背包问题 这个是网上比较好的案例,因为原文有些地方晦涩难懂,对于刚接触动态规划问题的朋友来说很不友好,所以很对地方加入了我自己的见解,也是作为我的一次学习历程. 一.问题描述: 有n ...
- 1008-----算法笔记----------0-1背包问题(动态规划求解)
1.问题描述 给定n种物品和一个背包,物品i的重量是wi,其价值为vi,背包的容量为C.问:应该如何选择装入背包的物品,使得装入背包中物品的总价值最大? 2.问题分析 上述问题可以抽象为一个整数规划问 ...
- 动态规划:01背包问题例题(leetcode+cpp实现)
文章目录 分割等和子集 最后一块石头的重量 前情回顾: 动态规划(4):01背包问题详解 分割等和子集 力扣传送门: https://leetcode.cn/problems/partition-eq ...
最新文章
- 用Leangoo思维导图管理OKR,目标管理
- Java如何打印异常的堆栈?
- c#输出一个平行四边形_如果Java 和 C# 同时出现,生态也差不多,你选择谁?
- 整数大小比较(信息学奥赛一本通-T1043)
- GirlsInAI 近期计划,求扩散,欢迎大家转起来!
- 达内java1707第一阶段_达内Java就业班学习路线图(附视频教程)
- 从零开始配置 vim(3)—— 键盘映射进阶
- java读取gpx文件格式,Gpx文件基本格式及常见错误——乱码
- TracePro小白学习操作
- OPENWRT:编译E8820V2总结
- 程序员进阶必备--写文档
- 用python写生日快乐说说_生日快乐的说说(精选50句)
- 中国 / 省市区县 / 四级联动 / 地址选择器(京东商城地址选择)
- DOM初探(14)——查看滚动条的滚动距离
- 网络资源计算机教学设计,第11课 网络资源任我搜 教案
- 【财富空间】华为HR总裁李杰:如何打造一支胜任的项目经理队伍?
- 从数据可视化模板,到数据分析方案,都整理给你了!
- js通过IP地址获取所在城市
- 如画的水乡,如画的同里58
- 斑马条纹是为了驱散舌蝇和马蝇