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:
std::vector
> combine(int n, int k) {
std::vector
> result; std::vector
vec; dfs(n,k,1,0,result,vec); return result; } private: void dfs(int n, int k, int bgn, int end,std::vector
> &result,std::vector
&vec) { if(end == k) { result.push_back(vec); } for (int i = bgn; i <= n; i++) { vec.push_back(i); dfs(n,k,i+1,end+1,result,vec); vec.pop_back(); } } };
?