85 lines
2.6 KiB
Java
85 lines
2.6 KiB
Java
package hu.pj.alg.test;
|
|
|
|
import hu.pj.alg.ZeroOneKnapsack;
|
|
import hu.pj.obj.Item;
|
|
import java.util.*;
|
|
import java.text.*;
|
|
|
|
public class ZeroOneKnapsackForTourists {
|
|
|
|
public ZeroOneKnapsackForTourists() {
|
|
ZeroOneKnapsack zok = new ZeroOneKnapsack(400); // 400 dkg = 400 dag = 4 kg
|
|
|
|
// making the list of items that you want to bring
|
|
zok.add("map", 9, 150);
|
|
zok.add("compass", 13, 35);
|
|
zok.add("water", 153, 200);
|
|
zok.add("sandwich", 50, 160);
|
|
zok.add("glucose", 15, 60);
|
|
zok.add("tin", 68, 45);
|
|
zok.add("banana", 27, 60);
|
|
zok.add("apple", 39, 40);
|
|
zok.add("cheese", 23, 30);
|
|
zok.add("beer", 52, 10);
|
|
zok.add("suntan cream", 11, 70);
|
|
zok.add("camera", 32, 30);
|
|
zok.add("t-shirt", 24, 15);
|
|
zok.add("trousers", 48, 10);
|
|
zok.add("umbrella", 73, 40);
|
|
zok.add("waterproof trousers", 42, 70);
|
|
zok.add("waterproof overclothes", 43, 75);
|
|
zok.add("note-case", 22, 80);
|
|
zok.add("sunglasses", 7, 20);
|
|
zok.add("towel", 18, 12);
|
|
zok.add("socks", 4, 50);
|
|
zok.add("book", 30, 10);
|
|
|
|
// calculate the solution:
|
|
List<Item> itemList = zok.calcSolution();
|
|
|
|
// write out the solution in the standard output
|
|
if (zok.isCalculated()) {
|
|
NumberFormat nf = NumberFormat.getInstance();
|
|
|
|
System.out.println(
|
|
"Maximal weight = " +
|
|
nf.format(zok.getMaxWeight() / 100.0) + " kg"
|
|
);
|
|
System.out.println(
|
|
"Total weight of solution = " +
|
|
nf.format(zok.getSolutionWeight() / 100.0) + " kg"
|
|
);
|
|
System.out.println(
|
|
"Total value = " +
|
|
zok.getProfit()
|
|
);
|
|
System.out.println();
|
|
System.out.println(
|
|
"You can carry the following materials " +
|
|
"in the knapsack:"
|
|
);
|
|
for (Item item : itemList) {
|
|
if (item.getInKnapsack() == 1) {
|
|
System.out.format(
|
|
"%1$-23s %2$-3s %3$-5s %4$-15s \n",
|
|
item.getName(),
|
|
item.getWeight(), "dag ",
|
|
"(value = " + item.getValue() + ")"
|
|
);
|
|
}
|
|
}
|
|
} else {
|
|
System.out.println(
|
|
"The problem is not solved. " +
|
|
"Maybe you gave wrong data."
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
new ZeroOneKnapsackForTourists();
|
|
}
|
|
|
|
} // class
|