I want to generate all arrays of k subsets of {0, 1, 2, ..., n-1} in C ++. In Haskell, I would do:
sets 0 n = [[]] sets kn = [i:s | i <- [0..n-1], s <- sets (k-1) i]
Or in Python:
def sets(k, n): if k == 0: return [()] return ((i,)+s for i in range(n) for s in sets(k-1, i))
So, for example, (line breaks are added for clarity)
ghci> sets 2 8 [[1,0], [2,0],[2,1], [3,0],[3,1],[3,2], [4,0],[4,1],[4,2],[4,3], [5,0],[5,1],[5,2],[5,3],[5,4], [6,0],[6,1],[6,2],[6,3],[6,4],[6,5], [7,0],[7,1],[7,2],[7,3],[7,4],[7,5],[7,6]]
What would be a "C ++ method"? Please note that I am not asking how to solve the problem. I ask what data types will be considered "normal" C ++ programmers.
(For reference, I am dimly familiar with C ++ and a little familiar with C.)