¿Cómo encontrar todas las combinaciones que suman como máximo una constante?

DejarP=[P1, P2, ..., Pk] serk enteros positivos y dejarT ser un número entero positivo Me gustaría generar todas las combinaciones que sumen como máximoT. Es decir,sum(x[i] * P[i] for i in 1:k) <= T dóndex[i] = 1 iffi Se elige en la combinación.

Ejemplo.

DejarP=[1, 2, 3] yT=4. Las combinaciones deben ser:

1
2
3
1, 2
1, 3
2, 3

Entonces solo la combinación1, 2, 3 no puede estar allí porque1 + 1 + 3 = 5 > 4.

Pensé en generar todas las combinaciones primero y luego comenzar a verificar la restricciónsum(x[i] * P[i] for i in 1:k) <= T. Pero este enfoque podría llevar más tiempo que otros enfoques inteligentes. ¿Cómo podemos generar tales combinaciones?

NÓTESE BIEN. Si conoce alguna función en Python o Matlab que pueda usarse para generar tales combinaciones, puede proporcionarla.

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta