/*************************************************************
* Program Solving the KNAPSACK problem by brute force *
* Author Jakub Holy *
* For the subject PAA, LS2002 *
* hw1_force.hh *
*************************************************************
*/
#include "ksack_in.hh" //# includes Item
/* This class represents the problem and the algorithm to solve it. */
class KnapsackProblem {
private:
// fields
int task_id;
int max_load; // the maximum weight the knapsack can carry
int nr_items; // the number of items we have
Item **items; // an array of items of this problem
// A configuration of the algorithm - a (partial) solution.
// It's an array of booleans, if config[i]== true, then items[i]
// (i-th item) is inside the knapsack.
bool *config;
bool *best_config; // the best solution found so far
int best_cost; // cost of the best_config configuration
int load; // current load of the knapsack
int cost; // cost of the current (partial) configuration
int index; // index for config[]
// methods
void descend(void);
bool mount(void); // Return false if can't mount => we're done.
public:
KnapsackProblem(int task_id, int nr_items, int max_load, Item **items);
~KnapsackProblem();
void solve(void);
void printResult(void);
}; // KnapsackProblem