第三十六天 | 01背包问题 416. 分割等和子集

416. 分割等和子集 

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

思路:先看数组和是否为偶数,如果不是直接返回False。如果是,和的一半就是target,看数组能否凑出这个target。那这里元素就是物品(只能取用一次),target就是背包大小。典型的01背包问题。

dp数组:dp = [True] + [False] * len(s) 没有字符串也没有单词的dp[0]要初始化成True,因为后续的所有True都依赖这个True而来。

递归公式:dp[j] = dp[j] or dp[j-nums[i-1]]

遍历顺序:外层背包,内层物品。二维数组,正序遍历。一维数组,逆序遍历。

二维数组:

一维数组:

以下是卡哥资料

 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/BV1cg411g7Y6 

 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-2.html 

视频讲解:https://www.bilibili.com/video/BV1BU4y177kY 

 416. 分割等和子集  

本题是 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容