RosettaCodeData/Task/Knapsack-problem-0-1/EasyLang/knapsack-problem-0-1.easy

28 lines
988 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
name$[] = [ "map" "compass" "water" "sandwich" "glucose" "tin" "banana" "apple" "cheese" "beer" "suntan cream" "camera" "t-shirt" "trousers" "umbrella" "waterproof trousers" "waterproof overclothes" "note-case" "sunglasses" "towel" "socks" "book" ]
weight[] = [ 9 13 153 50 15 68 27 39 23 52 11 32 24 48 73 42 43 22 7 18 4 30 ]
value[] = [ 150 35 200 160 60 45 60 40 30 10 70 30 15 10 40 70 75 80 20 12 50 10 ]
max_w = 400
#
2025-06-11 20:16:52 -04:00
proc solve i maxw &items[] &wres &vres .
2024-10-16 18:07:41 -07:00
if i = 0
2023-09-16 17:28:03 -07:00
wres = 0
vres = 0
items[] = [ ]
elif weight[i] > maxw
solve i - 1 maxw items[] wres vres
else
solve i - 1 maxw items[] wres vres
solve i - 1 maxw - weight[i] items1[] w1 v1
2024-10-16 18:07:41 -07:00
if v1 + value[i] > vres
2023-09-16 17:28:03 -07:00
swap items[] items1[]
items[] &= i
wres = w1 + weight[i]
2024-10-16 18:07:41 -07:00
vres = v1 + value[i]
2023-09-16 17:28:03 -07:00
.
.
2023-07-01 11:58:00 -04:00
.
2023-09-16 17:28:03 -07:00
solve len weight[] max_w items[] w v
2024-10-16 18:07:41 -07:00
print "weight: " & w & " value: " & v
write "items:"
2025-06-11 20:16:52 -04:00
for item in items[] : write " " & name$[item]