0
거의 배낭 문제를 계산했습니다. 나는 그들의 무게 (lbs)와 가치를 가진 품목의 목록을 가지고있다. 그리고 내 배낭은 11 파운드를 초과 할 수 없습니다.파이썬 : 배낭 계산의 마지막 부분에 붙이기
내가 계산하고 다음과 같이 출력 코드의 마지막 조각을 알아낼 수 없습니다 : 참조하십시오 최적의 아이템 1의 목록에있는 항목
을의 2. 총 중량 3. 총 가치를 제공하기 위해 내 현재 코드 :
# Potential items to bring in knapsack
items = (
("t-shirt", 0.53, 15),
("trousers", 1.06, 10),
("waterproof trousers", 0.93, 70),
("waterproof overclothes", 0.95, 75),
("socks", 0.09, 50),
("backpack & gear packaging", 1.9, 300),
("sleeping gear & tent/shelter", 2.8, 260),
("hammock", 2.8, 120),
("cooking gear & water storage", 0.8, 240),
("map", 0.2, 150),
("compass", 0.29, 35),
("glucose", 0.33, 60),
("tin", 1.5, 45),
("sunscreen", 0.24, 70),
("first aid kit", 1.3, 90),
("umbrella", 1.61, 40),
("water (1 pint)", 1, 200),
("food (3 days)", 4.5, 190),
("fuel", 0.2, 190),
("camera", 0.71, 30),
("beer", 1.15, 10),
("towel", 0.4, 12),
("book", 0.66, 10),
("sunglasses", 0.15, 20),
("notebook", 0.49, 80)
)
from itertools import combinations
def combinations_func(items):
""" return any combination from list of potential items for knapsack """
return (combination
for r in range(1, len(items)+1)
for combination in combinations(items, r))
def totalvalue_func(combination):
""" calculate total value for a combination of knapsack items """
total_weight = 0
total_value = 0
for item, weight, value in combination:
total_weight += weight
total_value += value
return (total_value, -total_weight) if total_weight <= 11 else (0,0)
어떤 도움을 주시면 감사하겠습니다!