Я думаю, что это все еще дубликат, может быть, я ошибаюсь.

лятьP=[P1, P2, ..., Pk] бытьk натуральные числа и пустьT быть положительным целым числом. Я хотел бы генерировать все комбинации, которые в сумме не болееT, Это,sum(x[i] * P[i] for i in 1:k) <= T гдеx[i] = 1 тогда и только тогдаi выбран в комбинации.

Пример.

ПозволятьP=[1, 2, 3] а такжеT=4, Комбинации должны быть:

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

Так что только комбинация1, 2, 3 не может быть там, потому что1 + 1 + 3 = 5 > 4.

Сначала я подумал о генерации всех комбинаций, а затем начал проверять ограничениеsum(x[i] * P[i] for i in 1:k) <= T, Но этот подход может занять больше времени, чем другие умные подходы. Как мы можем генерировать такие комбинации?

NB. Если вам известна какая-либо функция в Python или Matlab, которую можно использовать для генерации таких комбинаций, вы можете предоставить ее.

Спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос