Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
Example:
Input: n = 4, k = 2 Output: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
class Solution {
public:
vector<vector<int>> combine(int n, int k) {
m_n = n;
m_k = k;
int j = 1;
vector <int> temp;
vector<vector<int>> ans;
visit(ans, temp , j );
return ans;
}
void visit(vector<vector<int>> &ans, vector <int> & temp , int j )
{
if (temp.size() == m_k)
{
ans.push_back(temp);
return;
}
for (int i = j; i <= m_n; ++i)
{
temp.push_back(i);
visit(ans, temp , i+1);
temp.pop_back();
}
}
private:
int m_n;
int m_k;
};