【发布时间】:2020-02-16 06:33:31
【问题描述】:
列表定义如下:[1, 2, 3]
它的子列表是:
[1], [2], [3],
[1,2]
[1,3]
[2,3]
[1,2,3]
给定K,例如3,任务是找到元素总和小于等于k的子列表的最大长度。
我知道 python 中的itertools,但它会导致较大列表的分段错误。有没有其他有效的算法来实现这一点?任何帮助,将不胜感激。
我的代码是允许的:
from itertools import combinations
def maxLength(a, k):
#print a,k
l= []
i = len(a)
while(i>=0):
lst= list(combinations(sorted(a),i))
for j in lst:
#rint list(j)
lst = list(j)
#print sum(lst)
sum1=0
sum1 = sum(lst)
if sum1<=k:
return len(lst)
i=i-1
【问题讨论】:
-
初始数组长度的大小限制是多少?
-
问题的标题应该是最大的子集。未设置电源。
-
没有定义问题的明确大小界限。我认为算法应该自己考虑到这一点。
标签: python arrays algorithm powerset