+ - vấn đề ba lô


9

Cho một tập hợp các mục, mỗi mục có trọng số và giá trị, xác định số lượng của từng mục để đưa vào bộ sưu tập sao cho tổng trọng lượng nhỏ hơn hoặc bằng một giới hạn nhất định và tổng giá trị càng lớn càng tốt.

Wikipedia để biết thêm thông tin

Ví dụ: bạn có thể được cho trọng số tối đa là 15 và các đối tượng có giá trị / khối lượng [5,2], [7,4] [1,1]và bạn sẽ xuất ra [7,0,1]7 [5 <value>, 2 <mass>]đối tượng và 1 [1 <value>, 1 <mass>]đối tượng cho số điểm 36.

Quy tắc

Đầu vào có thể được thực hiện trong bất kỳ định dạng hợp lý

Đầu ra cũng là định dạng linh hoạt,

Bạn không thể sử dụng các thư viện không chuẩn. Nếu bạn phải cài đặt hoặc tải xuống bất kỳ thư viện nào để sử dụng nó tách biệt với thiết lập ban đầu thì không được phép

Các đối tượng có thể có khối lượng và giá trị âm (nghĩa là -1, -1)

Yêu cầu câu trả lời tối ưu

Chiến thắng

Mã ngắn nhất sẽ thắng

Khối lượng và giá trị âm?

Đây là một phần quan trọng của thách thức này. Hãy nói rằng bạn có một đối tượng với các vật phẩm (khối lượng, giá trị) như [4,3],[-1,-1]và một túi có sức chứa 15. Bạn có thể đặt 3 trong số những cái đầu tiên và ghi 9 hoặc đặt 4 trong số những cái đầu tiên và một trong các -1, -1 đối tượng cho điểm 11.



Chúng ta có thể cho rằng không có đối tượng sẽ có khối lượng không tích cực?
HyperNeutrino

@HyperNeutrino xóa một giây để chỉnh sửa
Christopher

2
Chúng ta có thể giả sử mọi thứ là một số nguyên? Ngoài ra, chúng ta sẽ phải xử lý các trường hợp như [[2, 1], [-1, -1]] trong đó tổng giá trị có thể được thực hiện lớn tùy ý?

5
Tiêu đề là sai lệch. Do trọng số âm, đây không phải là vấn đề về chiếc ba lô mà là một biến thể của vấn đề lập trình tuyến tính.
ngn

Câu trả lời:


2

Bình thường, 18 byte

h.MshMZfghQseMTy*F

Đầu ra dưới dạng danh sách các cặp [giá trị, trọng lượng]. Horrendously không hiệu quả, nhưng nó NP-đầy đủ.
Hãy thử nó ở đây

Giải trình

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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.