Список определяется следующим образом: [1, 2, 3]
и подсписки этого:
[1], [2], [3],
[1,2]
[1,3]
[2,3]
[1,2,3]
Учитывая K, например 3, задача состоит в том, чтобы найти наибольшую длину подсписка, сумма элементов которого меньше, чем равна k.
Я знаю о itertools
в python, но это приведет к ошибке сегментации для больших списков. Есть ли другой эффективный алгоритм для достижения этого? Любая помощь будет оценена по достоинству.
Мой код позволяет:
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