【发布时间】:2021-01-11 00:48:42
【问题描述】:
我得到了一个数组(最好是一个多重集),比如 L。现在,我需要告诉从这个集中形成两个子集(多重集)所需的最小元素数(L),这样两个子集的元素之和至少为 k(给定整数)。
我想到的基本想法是:最初,我们有两个空数组/集合。首先,将最大的元素添加到其中一个中。现在,从第二大开始,我将一个元素添加到两个元素中总和最小的子集中,然后继续直到我在这两个中得到至少 k 的总和。这个解决方案在许多测试用例中都有效,但后来我发现了一个反例,证明这个解决方案是不正确的。反例是: 取 L=[1, 2, 4, 5, 6, 7, 8] 和 k=16。
我知道这个问题在某种程度上是子集和问题的修改(更好地说,高级)版本,但不知道如何做到这一点。有人可以帮忙吗?
【问题讨论】:
标签: algorithm subset-sum