給定一個n和k,給出c_{n}^k的所有組合。
例:給定n=4,k=2,輸出,
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
一下是C++實現。
class Solution {
public:
vector<vector<int> > combine(int n, int k) {
vector<vector<int> > rvl;
if(n <= 0 || k <= 0) return rvl;
if(n == k) {
vector<int> vec;
for(int i = 0; i < n; i++){
vec.push_back(i+1);
}
rvl.push_back(vec);
return rvl;
}
if(k == 1){
for(int i = 0; i < n; i++){
vector<int> vec;
vec.push_back(i + 1);
rvl.push_back(vec);
}
return rvl;
}
//include n
vector<vector<int> > vec1 = combine(n - 1, k - 1);
for(int i = 0; i < vec1.size(); i++){
vec1[i].push_back(n);
}
if(vec1.size() > 0) rvl.insert(rvl.end(), vec1.begin(), vec1.end());
//not include n
vector<vector<int> > vec2 = combine(n - 1, k);
if(vec2.size() > 0) rvl.insert(rvl.end(), vec2.begin(), vec2.end());
return rvl;
}
};