使用回溯的办法,定义两个全局变量,存放集合和符合条件的结果。
如果找到了符合k个数的组合,就保存起来。
class Solution {
public:
vector<vector<int>> res;//保存符合的集合
vector<int> path;//保存符合的结果
void tra(int n, int k, int index){
if(path.size() == k){
res.push_back(path);
return;
}
for(int i = index; i <= n; i++){
path.push_back(i);//处理节点,将数组的元素逐个查找符合的结果。
tra(n,k,i+1);
path.pop_back();//回溯,将path中的元素清除,再存入新元素组成新组合。
}
}
vector<vector<int>> combine(int n, int k) {
tra(n,k,1);
return res;
}
};