Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
57
Task/Knapsack-problem-0-1/XPL0/knapsack-problem-0-1.xpl0
Normal file
57
Task/Knapsack-problem-0-1/XPL0/knapsack-problem-0-1.xpl0
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
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);
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue