Currently, one of the central problems in structural biology is the better understanding of large protein complexes. Cryo-electron microscopy has made a significant impact in this area due to its ability to image proteins in a near-native environment. Multi-resolution docking approaches then allow atomic models of the whole complex to be built. However, all existing tools only dock one subunit at a time, leaving the user to sift through dozens or hundreds of possible solution candidates to assemble the complete protein complex. Essentially, choosing the correct solutions from the candidate solution list is equivalent to solving the Knapsack problem (KP). The general case of the KP has been extensively studied in the field of computer science and is extremely compute intensive to solve. In the present case, we are interested in a set of candidate solutions without any steric clashes and maximal overall agreement with the experimental volumetric map of the protein complex. We developed a Knapsack solver targeted specifically at the assembly of protein complexes, exploiting knowledge of this problem domain to reduce the overall computational load. The solver first clusters the raw docking data to locate possible subunit neighborhoods, significantly cutting down the overall search space. Sets of candidates, consisting of one possible solution from each region, are then screened for steric clashes using a fast, octree based, clashing detector. Sets with large amounts of steric hindrance between subunits are discarded. The remaining sets are ranked by the sum of all CC scores of the contained candidates. Finally, the best complete docking solution is output. Besides details about our novel assembly algorithm, the present report examines its performance on both simulated and experimental data sets.