[LeetCode] 77. Combinations
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],
]
列出1…n中k长度的组合。
不知道怎么说了,递归产生组合吧。
class Solution {
public:
void getOneComb(vector<int>& src, int begin, int end, int k, vector<int>& res, vector<vector<int>>& ans) {
if (k == 0) {
ans.push_back(res);
return;
}
for (int i=begin; i<end; ++i) {
res.push_back(src[i]);
getOneComb(src, i+1, end, k-1, res, ans);
res.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> ans;
vector<int> src(n, 0);
for (int i=0; i<n; ++i) {
src[i] = i+1;
}
vector<int> res;
getOneComb(src, 0, n, k, res, ans);
return ans;
}
};