Recursive

class Solution {

public:

vector<vector<int>> ret;

vector<int> temp;

vector<vector<int>> combine(int n, int k) {

dfs(n,k,1,0);

return ret;

}

void dfs(int n, int k, int s,int d){

if(d==k){

ret.push_back(temp);

}

for(int i=s;i<=n;++i){

temp.push_back(i);

dfs(n,k,i+1,d+1);

temp.pop_back();

}

}

};

recursive 2

class Solution {

public:

vector<vector<int>> ret;

vector<int> p;

vector<vector<int>> combine(int n, int k) {

p.resize(k);

dfs(1,n,k);

return ret;

}

void dfs(int i,int n, int k){

while(i<=n){

p[p.size()-k]=i++;

if(k<=1){

ret.push_back(p);

}else{

dfs(i,n,k-1);

}

}

}

};

Last updated

Was this helpful?