-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmochila.py
58 lines (51 loc) · 1.88 KB
/
mochila.py
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import sys
def criaMatriz(qtdLinhas, qtdColunas):
mat = []
for i in range(qtdLinhas):
aux = []
for j in range(qtdColunas):
aux.append(0)
mat.append(aux)
return mat
def preencheMatriz(qtdLinhas, qtdColunas, listaPesos):
mat = criaMatriz(qtdLinhas, qtdColunas)
for i in range(1, qtdLinhas):
for j in range(1, qtdColunas):
if(listaPesos[i][0] <= j):
#O peso cabe na mochila
var = j - listaPesos[i][0] #peso
mat[i][j] = mat[i][j] + mat[i-1][var] + listaPesos[i][1] #valor
else:
#Caso o peso não caiba na mochila
mat[i][j] = mat[i-1][j]
return mat
def printMatriz(mat):
for i in range(len(mat)):
for j in range(len(mat[i])):
sys.stdout.write('[' + str(mat[i][j]) + ']')
print()
def pegarPesosResultantes(mat, listaPesos, capacidadeMax):
lin = len(listaPesos)-1
col = capacidadeMax
val = 1
pesos = []
while(val != 0):
if(mat[lin][col] != mat[lin-1][col]):
pesos.append(listaPesos[lin][0])
col = col - lin
lin -= 1
val = mat[lin][col]
return pesos
listaPesos = [[0, 0], [3, 40], [5, 100], [2, 50]]
print('+--------------------------------------------------------------------------------------------------+')
txt = 'Matriz criada:'
x = txt.center(100)
print(x)
print('+--------------------------------------------------------------------------------------------------+')
mat = preencheMatriz(4, 21, listaPesos)
printMatriz(mat)
print('+--------------------------------------------------------------------------------------------------+')
print()
print('Pesos a serem inseridos na mochila:')
print(pegarPesosResultantes(mat, listaPesos, 20))
print('+--------------------------------------------------------------------------------------------------+')