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],
]
简单dfs:
class Solution {
void dfs(int b, int l, int &n, vector<int> &res, vector<vector<int>> &ans)
{
if(l == 0)
{
ans.push_back(res);
return ;
}
for(int i=b; i <= n-l+1; ++ i)
{
res.push_back(i);
dfs(i+1, l-1, n, res, ans);
res.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> ans;
vector<int> res;
dfs(1, k, n, res, ans);
return ans;
}
};