摘要:
题目 分析 本题是两维01背包。每个子字符串为一件物品,并且只取一次,这就是01背包。两个维度体现在零的数量和一的数量上,也就是原始的01背包中的体积是一个维度,这里对应0的数量和1的数量。原始01背包中的价值对应每一个子字符串,选中子字符串就加1。dp【i】【j】表示最多i个零和最多j个1的最大集 阅读全文
posted @ 2021-02-15 21:09
Uitachi
阅读(99)
评论(0)
推荐(0)
摘要:
题目 分析 这道题开始我是想用回溯,但一看数据量,肯定会超时(指数级的时间复杂度)。没有思路,想着应该是dp,怎么进行转化,转为我们熟悉的问题呢?题目的意思就是说将数组分成两堆n1,n2,使得 n1 - n2 = S 。且有n1 + n2 = sum。由这两个式子可得 n1 + n2 = 2 * n 阅读全文
posted @ 2021-02-15 18:19
Uitachi
阅读(153)
评论(0)
推荐(0)
摘要:
题目 分析 本题和分割等和子集题目有异曲同工之妙。本题就是将石头尽可能分成重量相同的两堆,使得这两堆重量相减之后结果最小。这就转化为了分割相同等和子集的题目。 代码 二维dp数组 1 class Solution { 2 public: 3 int lastStoneWeightII(vector< 阅读全文
posted @ 2021-02-15 17:15
Uitachi
阅读(128)
评论(0)
推荐(0)

浙公网安备 33010602011771号