我有一个代码,给定一个数组和目标和,我的代码返回一对两个整数,它们加起来就是和。 Python函数如下
def pairSum2(arr, k):
if len(arr)<2:
return
seen=set()
output=set()
for num in arr:
target=k-num
if target not in seen:
seen.add(num)
else:
output.add( (min(num, target), max(num, target)) )
print ('\n'.join( map(str, list(output)) ))
我必须对其进行修改,以使给定总和,找出数组中最大可能组合为<= sum:
我提到了子集和问题Subset Sum algorithm。该算法如何打印所有加起来为总和的子集。我被允许一次<=两个数字。
答案 0 :(得分:0)
我希望它会有所帮助。
只需对数组排序并找到最小的数,例如a <= sum。接着 ,
让我们有变量i,j,k。 j = a的索引,count = 0
while(i<j){
k=j;
while(k>sum-i && k>i)
k--;
//Unique combinations that will give count of pairs having add upto specified
//sum
if(k>i)
count=count+k-i;
i++;
}`