A hypercube algorithm for the 0/1 Knapsack problem