Recursive Depth-First Method
Current board B ? empty board.
Remaining pieces Q ? all pieces.
Procedure Solve(board B, set of pieces Q)
Place P in the first available
position of B in orientation A, obtaining B�.
If B� is full and meets all constraints, output B�.
If B� is full and does not meet all constraints, return.