I'm sure other people have already come up with similar ideas, but I wanted to share this cool trick.
Introduction
C++ has next_permutation
which is very nice, but what about all the other combinatorics functions like Python has in the very nice itertools
library. How should you go about writing a C++ brute force solution that uses things like combinations, cartesian product/power, etc. Will you have to write the annoying (and quite large overhead) recursive backtracking? In this blog I show a light, efficient, and quite general way to do this type of thing using macros.
Cartesian Power
Let's start with the most simple example to introduce the idea. We want to enumerate [0, a)^N
.