Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void knapsackBrute(std::vector<Item> items, int knapsackCapacity) {
- int numberOfItems = items.size();
- int fmax = 0;
- int wmax = 0;
- int solution = 0;
- int maxLoop = static_cast<int>(std::pow(2, numberOfItems));
- for (int X = 1; X < maxLoop; ++X) {
- int weightX = 0;
- int valueX = 0;
- int index = numberOfItems - 1;
- // For each bit of X value
- while (X) {
- if (X & 1) {
- weightX += items[index].weight;
- valueX += items[index].value;
- }
- X >>= 1;
- index -= 1;
- }
- if (weightX <= knapsackCapacity) {
- if (valueX >= fmax) {
- fmax = valueX;
- wmax = weightX;
- solution = X;
- }
- }
- }
- std::cout << "fmax: " << fmax << '\n';
- std::cout << "wmax: " << wmax << '\n';
- std::cout << "X: " << solution << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement