Sorting problem aside, which is more-less straighforward, selecting the largest non-overlapping boxes is actually more interesting task. A couple of thoughts:
The "largest" actually means that you have to select 1st largest box, and then try to fit another moving down the sorted list, and so on, until you have N selected boxes. If a box fits, it is added to the selection. The problem arrears when you cannot fit the required N boxes, so you have to backtrack, remove the last box from the set of selected boxes and replace it with the next, lesser one, and continue. The whole backtracking process can easily take forever, so some
kind of smart caching along the way is a must, but I cannot think of any.
Hope this helps