c++ generate all subsets
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;
int main() {
// this is the length of the array of values
// change variable "len" accordingly
int len = 5;
// this is the array of values
int values[] = {3, 4, 2, 8, 5};
// all subsets will be in vector "subsets"
vector<vector<int>> subsets;
for (int i = 0; i < pow(2, len); i++) {
int t = i;
vector<int> v;
for (int j = 0; j < len; j++) {
if (t & 1)
v.push_back(values[j]);
t >>= 1;
}
subsets.push_back(v);
}
// print all of the subsets (optional)
cout << "subsets:\n";
for (const vector<int>& subset: subsets) {
for (const int& value: subset)
cout << value << " ";
cout << "\n";
}
// note: an empty line will be printed at the top,
// indicating an empty subset
}