+ - проблема з рюкзаком


9

Враховуючи набір предметів, кожен з вагою і значенням, визначте кількість кожного предмета, який слід включити до колекції, щоб загальна вага була меншою або дорівнює заданій межі, а загальна величина була максимально можливою.

Вікіпедія для отримання додаткової інформації

Наприклад, вам може бути надана максимальна вага 15 та об'єкти зі значенням / масою, як [5,2], [7,4] [1,1]і ви виведете, [7,0,1]що становить 7 [5 <value>, 2 <mass>]об'єктів і 1 [1 <value>, 1 <mass>]об'єкт за рахунок 36.

Правила

Введення даних може бути здійснено у будь-якому розумному форматі

Вихід також є гнучким форматом,

Ви не можете використовувати бібліотеки, які є нестандартними. Якщо вам необхідно встановити або завантажити будь-яку бібліотеку , щоб використовувати його окремо від початкової установки , то він НЕ допускається

Об'єкти можуть мати негативну масу та значення (тобто -1, -1)

Необхідні оптимальні відповіді

Перемога

Найкоротший код виграє

Негативна маса і значення?

Це ключова частина цього виклику. Скажімо, у вас є предмет з предметами (маса, вартість), наприклад, [4,3],[-1,-1]і мішок місткістю 15. Ви можете поставити 3 перших і набрати 9 або помістити 4 перших та один із -1, -1 об’єкт за балом 11.



Чи можна припустити, що жоден об’єкт не матиме позитивної маси?
HyperNeutrino

@HyperNeutrino вилучення на секунду для редагування
Крістофер

2
Чи можемо ми вважати, що все ціле число? Також чи доведеться мати справу з такими випадками, як [[2, 1], [-1, -1]], коли загальне значення можна зробити довільно великим?

5
Назва вводить в оману. Зважаючи на негативні ваги, це не проблема рубашки, а різниця в задачі лінійного програмування.
ngn

Відповіді:


2

Піт, 18 байт

h.MshMZfghQseMTy*F

Виводи у вигляді списку [значення, вага] пар. Дивовижно неефективно, але є NP-повною.
Спробуйте тут

Пояснення

h.MshMZfghQseMTy*F
               y*FQ  Get all sets with up to <capacity> of each item.
       fghQseMT      Choose the sets whose total weight fits in the bag.
 .MshMZ              Choose those with the highest value.
h                    Take the first.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.