39 lines
739 B
Python
39 lines
739 B
Python
from plecak import *
|
|
import copy
|
|
|
|
l = 4
|
|
dostepne = [Item() for _ in range(l)]
|
|
|
|
for x in dostepne:
|
|
print(x.waga, x.wartosc)
|
|
|
|
cap = 10
|
|
|
|
|
|
def knapsack(dostepne, cap):
|
|
def rekurencja(i, waga, val, alfa):
|
|
nonlocal max_val
|
|
|
|
if i >= len(dostepne) or waga==cap:
|
|
if val > max_val:
|
|
max_val = val
|
|
return
|
|
|
|
if val >= alfa:
|
|
return
|
|
|
|
if waga + dostepne[i].waga <= cap:
|
|
rekurencja(i+1, waga + dostepne[i].waga, val + dostepne[i].wartosc, alfa)
|
|
|
|
rekurencja(i+1, waga, val, alfa)
|
|
|
|
max_val = float("-inf")
|
|
rekurencja(0, 0, 0, 25)
|
|
return max_val
|
|
|
|
|
|
best = knapsack(dostepne, cap)
|
|
|
|
|
|
print("----------\n" + f'wartość plecaka: {best}\n')
|