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


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
Название вводит в заблуждение. Из-за отрицательных весов это не проблема ранца, а разновидность задачи линейного программирования.
НГН

Ответы:


2

Pyth, 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.