Algorithm 如何找到一个“和”;";可能只从给定数组中获取k个元素
最近,我遇到了以下问题: k-子集和 您将获得一个包含N个元素的正整数数组A[]。现在,您需要从给定数组a[]中形成一个包含K个元素的新数组,并且它的和应该等于S。另外,新形成的大小为K的数组应该是字典最小的 约束条件Algorithm 如何找到一个“和”;";可能只从给定数组中获取k个元素,algorithm,data-structures,dynamic-programming,knapsack-problem,Algorithm,Data Structures,Dynamic Programming,Knapsack Problem,最近,我遇到了以下问题: k-子集和 您将获得一个包含N个元素的正整数数组A[]。现在,您需要从给定数组a[]中形成一个包含K个元素的新数组,并且它的和应该等于S。另外,新形成的大小为K的数组应该是字典最小的 约束条件 给定数组的大小A[](数字的范围是多少?K的期望值是多少?@amit编辑了这个问题以反映约束谢谢。整数是唯一的吗?(这很重要,因为在您的情况下,总和与元素数相同,如果整数是唯一的正整数,在最坏的情况下,您会得到1+2+…+m-1+m=10^5,因为这是算术级数的总和,m的最大值是
给定数组的大小A[](数字的范围是多少?K的期望值是多少?@amit编辑了这个问题以反映约束谢谢。整数是唯一的吗?(这很重要,因为在您的情况下,总和与元素数相同,如果整数是唯一的正整数,在最坏的情况下,您会得到
1+2+…+m-1+m=10^5
,因为这是算术级数的总和,m
的最大值是~2*sqrt(10^5)
,通过~x300@amit这个问题没有这样的限制。但我明白你的意思,如果它们是独一无二的,你有什么想法?采取你的方法,但对任何可能的提前终止都非常敏感,如果很明显这不会产生好的结果。我不确定总的来说有没有更好的解决方案。对于UNBunded子集sun(您想要的任何元素)复杂度为O(nW),其中W是所需的sun。