sundeepblue
4/27/2014 - 12:50 PM

return all combinations of an array

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;
    }
}