50 lines
1.7 KiB
Plaintext
50 lines
1.7 KiB
Plaintext
#define Tabu = Chr(9)
|
|
Dim As Integer i, A, P, V, N
|
|
Dim As Integer MejorArticulo, MejorValor = 0
|
|
Type Knapsack
|
|
articulo As String*22
|
|
peso As Integer
|
|
valor As Integer
|
|
End Type
|
|
Dim item(1 To 22) As Knapsack => { _
|
|
("map ", 9, 150), ("compass ", 13, 35), _
|
|
("water ", 153, 200), ("sandwich ", 50, 160), _
|
|
("glucose ", 15, 60), ("tin ", 68, 45), _
|
|
("banana ", 27, 60), ("apple ", 39, 40), _
|
|
("cheese ", 23, 30), ("beer ", 52, 10), _
|
|
("suntan cream ", 11, 70), ("camera ", 32, 30), _
|
|
("T-shirt ", 24, 15), ("trousers ", 48, 10), _
|
|
("umbrella ", 73, 40), ("waterproof trousers ", 42, 70), _
|
|
("waterproof overclothes", 43, 75), ("note-case ", 22, 80), _
|
|
("sunglasses ", 7, 20), ("towel ", 18, 12), _
|
|
("socks ", 4, 50), ("book ", 30, 10)}
|
|
|
|
For i = 1 To (1 Shl 22)-1
|
|
A = i : P = 0 : V = 0 : N = 1
|
|
While A
|
|
If A And 1 Then
|
|
P += item(N).peso
|
|
V += item(N).valor
|
|
End If
|
|
A Shr= 1
|
|
N += 1
|
|
Wend
|
|
If V > MejorValor And P <= 400 Then
|
|
MejorValor = V
|
|
MejorArticulo = i
|
|
End If
|
|
Next
|
|
|
|
A = MejorArticulo : P = 0 : V = 0 : N = 1
|
|
While A
|
|
If A And 1 Then
|
|
Print " "; item(N).articulo; Tabu;
|
|
Print item(N).peso; Tabu; item(N).valor
|
|
P += item(N).peso
|
|
V += item(N).valor
|
|
End If
|
|
A Shr= 1 : N += 1
|
|
Wend
|
|
Print "Totals:"; Spc(25); P; Tabu; V
|
|
Sleep
|