代码随想录算法训练营第二十七天
77. 组合
题目链接:77. 组合
暴力搜索所有可能性
class Solution {
public:
vector<int> result;
vector<vector<int>> results;
void backtracking(int n,int k ,int starkIndex){
if(result.size()==k){// 终止条件
results.push_back(result);//收集结果
return;
}
for(int i =starkIndex;i<=n;i++){
result.push_back(i);//处理节点
backtracking(n, k, i+1);//递归
result.pop_back();//回溯将组合还原,加入下一个节点
}
}
vector<vector<int>> combine(int n, int k) {
backtracking(n, k, 1);
return results;
}
};
//剪枝操作
class Solution {
public:
vector<int> result;
vector<vector<int>> results;
void backtracking(int n,int k ,int starkIndex){
if(result.size()==k){// 终止条件
results.push_back(result);//收集结果
return;
}
for(int i =starkIndex;i<=n-(k-result.size())+1;i++){//优化剪枝
result.push_back(i);//处理节点
backtracking(n, k, i+1);//递归
result.pop_back();//回溯将组合还原,加入下一个节点
}
}
vector<vector<int>> combine(int n, int k) {
backtracking(n, k, 1);
return results;
}
};