题目大意:从1 ~ n中选出k个不重复的数,求所有这些组合
解题思路:深度递归
class Solution {
public:
vector<vector<int> > combine(int n, int k) {
vector<vector<int> > result;
if(k > n) {
return result;
}
vector<int> array(n, 0);
for(int i = 0; i < n; i++) {
array[i] = i + 1;
}
vector<int> val;
combineAssist(array, 0, k, result, val);
return result;
}
private:
void combineAssist(vector<int>& array, int index, int k, vector<vector<int> > &result, vector<int> &val) {
if(k == 0) {
result.push_back(val);
return;
}
if(index >= array.size()) {
return;
}
for(int i = index; i < array.size(); i++) {
val.push_back(array[i]);
combineAssist(array, i + 1, k - 1, result, val);
val.pop_back();
}
}
};