57 lines
2.2 KiB
Text
57 lines
2.2 KiB
Text
include c:\cxpl\codes; \include 'code' declarations
|
|
|
|
int Item, Items, Weights, Values,
|
|
BestItems, BestValues,
|
|
I, W, V, N;
|
|
def Tab=9;
|
|
def Name, Weight, Value;
|
|
[Item:= [["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]];
|
|
|
|
BestValues:= 0;
|
|
for Items:= 0 to 1<<22-1 do \for all possible combinations of Items...
|
|
[I:= Items; W:= 0; V:= 0; N:= 0;
|
|
while I do \add weights and values for each item (bit in I)
|
|
[if I&1 then
|
|
[W:= W + Item(N,Weight); V:= V + Item(N,Value)];
|
|
I:= I>>1; N:= N+1;
|
|
];
|
|
if V>BestValues & W<=400 then \save best combination found so far
|
|
[BestValues:= V; BestItems:= Items];
|
|
];
|
|
|
|
I:= BestItems; W:= 0; V:= 0; N:= 0; \show best combination of items
|
|
while I do
|
|
[if I&1 then
|
|
[Text(0, " "); Text(0, Item(N,Name)); ChOut(0, Tab);
|
|
IntOut(0, Item(N,Weight)); ChOut(0, Tab);
|
|
IntOut(0, Item(N,Value)); CrLf(0);
|
|
W:= W + Item(N,Weight);
|
|
V:= V + Item(N,Value);
|
|
];
|
|
I:= I>>1; N:= N+1;
|
|
];
|
|
Text(0, "Totals: ");
|
|
IntOut(0, W); ChOut(0, Tab);
|
|
IntOut(0, V); CrLf(0);
|
|
]
|