![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
0-1背包
文章平均质量分 51
ggaoda
这个作者很懒,什么都没留下…
展开
-
leetcode-494.目标和
给你一个整数数组 和一个整数 。向数组中的每个整数前添加 或,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例2:思路:设我们加上的元素和为 , 加上的元素和的绝对值为那么我们需要的目标值设数组总和为,那么又有由以上两式得出 (转化为背包问题的背包大小)则本题转化为,我原创 2022-07-14 10:54:25 · 84 阅读 · 0 评论 -
leetcode-322.零钱兑换
背包类问题题目详情给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例2:输入:coins = [2], amount = 3输出:-1示例3:输入:coins = [1],原创 2022-05-03 10:36:27 · 247 阅读 · 0 评论 -
leetcode-474.一和零
背包类问题题目详情给你一个二进制字符串数组 strs 和两个整数 m 和 n 。请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个0和n个 1 。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。示例1:输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4 。原创 2022-05-03 10:11:06 · 137 阅读 · 0 评论 -
leetcode-416.分割等和子集
背包类问题题目详情给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。我的代码:本题可以转化为在数组中挑选元素总和价值为sum/2的数字所以可以视为0-1背包问题/*本题的可以转化原创 2022-05-02 09:11:42 · 172 阅读 · 0 评论