Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]思路:递归
代码:
class Solution {
public:
vector<vector<int> > combine(int n, int k) {
vector<vector<int> > res;
vector<int> temp;
dfs(res,temp,n,0,0,k);
return res;
}
void dfs(vector<vector<int> > &res, vector<int> temp, int n, int pre, int step, int k){
if(step==k){
res.push_back(temp);
return;
}
for(int i=pre+1;i<=n;i++){
temp.push_back(i);
dfs(res,temp,n,i,step+1,k);
temp.pop_back();
}
}
};