Arranging arbitrary rectangles to fill a space
Haskell, 226 bytes

((y,z):l)&amp;(w,x)|x*y&lt;1=(w+y,x+z):l
(q:l)&amp;p=p:q:l
(p@(u,v):r@(y,z):l)%q@(w,x)=[((y-w,z):l)&amp;q&amp;(u,v-x)|w&lt;=y,x&lt;=v]++[p:m|m&lt;-(r:l)%q]
_%_=[]
g m(p:n)l=any(g[]$m++n)(l%p)||g(p:m)n l
g[]_[_,_,_]=0&lt;1
g _[]_=0&lt;0
($[(0,9^9),(9^9,0)]).g[]


Try it on Ideone

How it works

This recursively searches for all partial tilings whose shape is a Young diagram, adding one rectangle at a time, and checks whether any of the final results are rectangles.

To see that any tiling of a rectangle can be built this way: in any tiling of a nonempty Young diagram, let R be the set of rectangles in the tiling whose southwest corner does not touch any other rectangle.  Since each concave vertex of the Young diagram is edge-adjacent (not merely corner-adjacent) to at most one rectangle in R, and the number of these concave vertices is one less than the number of rectangles in R, there must be at least one rectangle in R that is edge-adjacent to none of these concave vertices.  Removing it yields another Young diagram, so we can proceed by induction.