Produce all unordered unique combinations of N-sized subsets of an m·N-sized set
Knuth wrote a chapter on this, as part of the new volume 4 of his Art of Computer Programming.
The simplest algorithm uses the following recursion to generate all combinations of length $m$ of a set $x_1,\ldots,x_n$:

If $m = 0$ then output the empty set.
Otherwise, for each $m \leq i \leq n$, generate all combinations of length $m-1$ of $x_1,\ldots,x_{i-1}$, and add $x_i$ to all of them.