Pagini recente » Cod sursa (job #1922327) | Cod sursa (job #2985837) | Cod sursa (job #3210405) | Cod sursa (job #2722841) | Cod sursa (job #2850315)
fin = open("rucasc.in", "r")
first_line = fin.readline().split()
N = int(first_line[0])
W = int(first_line[1])
weights = [0]
costs = [0]
for i in range(N):
current_line = fin.readline().split()
current_weight = int(current_line[0])
current_cost = int(current_line[1])
weights.append(current_weight)
costs.append(current_cost)
n = len(weights) - 1 # n = numarul de obiecte
# initializam toate elementele matricei cmax cu 0
cmax = [[0 for x in range(W + 1)] for x in range(n + 1)]
# calculam elementele matricei cmax folosind relatia de recurenta
for i in range(1, n + 1):
for j in range(1, W + 1):
cmax[i][j] = cmax[i - 1][j]
if weights[i] <= j and costs[i] + cmax[i - 1][j - weights[i]] > cmax[i - 1][j]:
cmax[i][j] = costs[i] + cmax[i - 1][j - weights[i]]
fout = open("rucsac.out", "w")
fout.write(str(cmax[n][W]))
fout.close()