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.