组合问题
class Solution {
private:
vector<vector<int>> ans;//保存结果
vector<int> path;//保存符合条件的结果
void dfs(int n,int k,int startindex){
if(path.size() == k){
ans.push_back(path);//表明找到了符合条件的结果,将其保存到ans中
return;
}
for(int i = startindex;i<=n;i++){//横向遍历集合中的节点
path.push_back(i);//将当前节点添加到符合条件的结果中
dfs(n,k,i+1);
path.pop_back();//回溯
}
}
public:
vector<vector<int>> combine(int n, int k) {
dfs(n,k,1);
return ans;
}
};