explication code optimisation combinatoir
Bonjour, j'ai trouvé une fonction pour le problème de la "somme de sous-ensembles" ou "subset sum" qui fonctionne bien.
Je ne comprend pas très bien ce qu'est le with_v dans le code. J'aimerais le convertir pour du VBA sur excel.
Si vous avez une idée? Merci d'avance!
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| def subsetsum(array,num):
if num == 0 or num < 1:
return None
elif len(array) == 0:
return None
else:
if array[0] == num:
return [array[0]]
else:
with_v = subsetsum(array[1:],(num - array[0]))
if with_v:
return [array[0]] + with_v
else:
return subsetsum(array[1:],num)
print(subsetsum([5,1,3,25,33,55,88,77,33,4,22],10)) |
le résultat ici donne : [5,1,4]