【发布时间】:2017-03-02 23:58:55
【问题描述】:
问题:如果我们给定整数 N、K 和大小为 N 的数组,使得 1
这里是一个例子:N = 4, K=6, array = {1,2,5,4} 答案是 9,因为我们可以通过九种不同的方式从数组中获取元素,并且它们的总和至少为 K,答案是元素(第一个和第三个); (第二和第三); (一、二、三); (第二和第四); (一、二、四); (第一、第三和第四); (第二、第三和第四); (一、二、三、四); (第三和第四)。
我的想法是使用位掩码,我们可以搜索所有组合并选择我们应该采用还是不应该采用,但这具有 O(2^N) 的复杂性,在我们的例子中 N
【问题讨论】:
-
如果任何元素或元素组合大于 K,那么添加任何元素仍将大于 K,假设所有元素都是正数。在您的示例中,如果您发现第一个和第三个元素符合条件,则自动获得集合 (1st,2nd,3rd), (1st,3rd,4th),(1st, 2nd,3rd,4th)跨度>