列表的定义如下:[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
https://stackoverflow.com/questions/41284951
复制相似问题