배낭 문제


9

각각 가중치와 값이있는 항목 세트가 제공되면 컬렉션에 포함 할 각 항목의 수를 결정하여 총 가중치가 주어진 한도보다 작거나 같고 총 값이 최대한 커지도록합니다.

자세한 내용은 Wikipedia

예를 들어, 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 1 초 편집을 위해 제거
Christopher

2
모든 것이 정수라고 가정 할 수 있습니까? 또한 [[2, 1], [-1, -1]]과 같은 경우 전체 값을 임의로 크게 할 수있는 경우를 처리해야합니까?

5
제목이 잘못되었습니다. 음의 가중치로 인해 이는 배낭 문제가 아니라 선형 프로그래밍 문제의 변형입니다.
ngn

답변:


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.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.