Скажем, у меня есть три продукта:
Продукт A Будет доставлять 5 ед. Затраты 50.
Продукт B Обеспечивает 9 мощностей. Расходы 80.
Продукт C Поставляет мощность 15. Затраты 140.
Я хочу знать, какую комбинацию продуктов я могу купить, когда мне нужно 7 power. Я мог бы купить два A, но один из B дешевле.
Когда мне понадобится 65 ед. Мне понадобится 4 раза C и 1 раз A (стоит 680). Но я мог бы также использовать семь B продуктов и один A (стоит 610).
Я ищу способ рассчитать возможные комбинации продуктов для заданного количества мощности, в которой я нуждаюсь.
То, как я пытался это сделать, не дает мне того, что я хочу:
// $products are sorted DESC on their $power
$power = 65
while( $power > 0 ) {
foreach( $products as $productPower ) {
if( ( $productPower > $power && $power - $productPower > 0 ) || $productPower == end( $products ) ) {
// Add product to list
$power -= $productPower;
break;
}
}
}
Этот пример кода даст мне только 4 раза C и один раз A. Как мне это сделать?
EDIT. Количество продуктов является переменной. Кроме того, конкретная стоимость и мощность являются переменными. Таким образом, может быть 10 продуктов с более чистыми и более дорогими ценниками.
EDIT 2 Как я уже говорил выше, я хочу рассчитать возможные комбинации (множественное число). Некоторые люди, похоже, пропустили это в моем описании.