return all combinations of an array
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void dfs(vector<int> &num, vector<vector<int>> &res,
vector<int> comb, int i, int n) {
if(i == n) {
res.push_back(comb);
comb.clear();
return;
}
dfs(num, res, comb, i+1, n);
comb.push_back(num[i]);
dfs(num, res, comb, i+1, n);
comb.pop_back();
}
vector<vector<int>> combinations(vector<int> &num) {
vector<vector<int>> res;
vector<int> comb;
dfs(num, res, comb, 0, num.size());
return res;
}
int main() {
vector<int> num = {1,2,3};
vector<vector<int>> res = combinations(num);
for(auto v : res) {
for(int d : v) cout << d << " ";
cout << endl;
}
}