当前位置: 首页 > 面试题库 >

给定整数集的子集,其总和为常数N:Java

商迪
2023-03-14
问题内容

给定一组整数,如何找到一个总和为给定值的子集…子集问题?

示例:S = {1,2,4,3,2,5}并且n =
7求和为n的可能子集。我试图用Google搜索出很多链接,但不清楚。我们如何在Java中解决这个问题?要使用什么数据结构及其复杂性?


问题答案:

我不会给您任何代码,但会解释它是如何工作的。

  1. 从运行循环 0 to (2^k-1)
  2. 对于1中的每个值,其二进制表示中的1表示已选择此值,否则为0。
  3. 测试以查看所选数字的总和是否等于 n

上面的方法将评估给定集合的每个可能子集。

如果值的上限较小,则可以使用动态编程方法。



 类似资料:
  • 我的问题是,我需要从这个布尔数组中提取和等于指定和的实际子集。我尝试过这样做,但是我的方法中的逻辑(涉及到使用布尔数组来减少我必须分析的子集的数量)变得相当复杂,并且我很难实现它。 有没有人知道当使用生成的布尔数组时,找到其和等于给定和的所有子集的好方法? 编辑%1 输入 输出

  • 给出不同整数的列表 我的想法:< br >一种简单的方法是一个接一个地选择一个元素,看看它形成的完美子集的大小,然后我们可以简单地返回最大值。这将是计算密集型的。< br >有什么好的解决方案吗

  • 使用递归,编写一个给定整数列表和给定和的程序,将找到总数为给定和的所有数字子集。计算找到的子集数。如果不存在子集,则应指示未找到解决方案。例如,给定列表6、13、3、3,且总和为19,您的程序应找到两个解决方案: 将输入列表中的整数数限制为最多20个整数。仅接受正整数,并使用0标记列表的结尾。以下是运行示例: 这是我的代码,但它只找到一个子集,我想找到所有子集。有什么帮助吗?

  • 给定一组未排序的整数,返回大小为k的所有子集(即每组有k个唯一元素),其总和为0。 所以我给了面试官以下解决方案(我在GeekViewpoint上研究过)。没有使用额外的空间,一切都做到位,等等。但当然成本是O(n^k)的高时间复杂度,其中在解决方案中。 但随后她提出了以下要求: 必须在答案中使用hashmap以降低时间复杂度 必须绝对地为一般情况提供时间复杂度 k=6时的提示,O(n^3) 她对

  • 我知道这是一个背包问题,其中权重和值相等,但我认为我在编码逻辑上犯了一个错误,因为即使对于数组中元素的数量(N)为50并且所需的最大总和(M)4500。 为了澄清这个问题,我们得到了一个由N个正整数和一个正整数M组成的数组。数组元素只能使用一次。我们必须找到这个数组的子集(不一定是连续的),使得总和最接近M,但不超过它。 这是我使用动态编程的尝试: 那么在我的代码中是否有任何可能的优化可以帮助我降

  • 我在Scala中做了一个问题,这是任务语句的摘要: 上述示例的输出: 1 2 3 -1 第一行是数组长度,第二行是整数数组(0 以下是我尝试的:选择的元素并不重要。所以我先对给定整数的列表排序最大。然后我选择了第一个元素,检查它是否大于S,如果不大于S,我也选择了第二个元素,依此类推,直到总和大于或等于S。 我的代码(Scala):