-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path01_knapsackProblem.py
More file actions
27 lines (23 loc) · 869 Bytes
/
Copy path01_knapsackProblem.py
File metadata and controls
27 lines (23 loc) · 869 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def knapsack01(W, wt, val, n):
"""
Soluzione dello zaino 0-1 utilizzando la programmazione dinamica
Argomenti:
W (int): peso totale
wt (list): lista dei pesi degli oggetti
val (list): lista dei valori degli oggetti
n (int): numero degli oggetti
Valore di Ritorno:
massimo valore che si puo ottenere
"""
# Tabella dove vado a memorizzare i valori migliori per ogni peso
dp = [[0 for _ in range(W+1)] for x in range(n+1)]
for i in range(n + 1):
for w in range(W + 1):
if i == 0 or w == 0:
dp[i][w] = 0
elif wt[i-1] <= w:
dp[i][w] = max(val[i - 1] + dp[i - 1]
[w - wt[i - 1]], dp[i - 1][w])
else:
dp[i][w] = dp[i - 1][w]
return dp[n][W]