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], ]
考察:dfs;
class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> res;
vector<int> out;
combineDFS(n, k, 1, out, res);
return res;
}
void combineDFS(int n, int k, int level, vector<int>& out, vector<vector<int>>& res) {
if (k == out.size())
res.push_back(out);
else {
for (int i = level; i <= n; i ++) {
out.push_back(i);
combineDFS(n, k, i+1, out, res);
out.pop_back();
}
}
}
};