77.组合
77.组合
简单的回溯法模板:
void backtracking(path,finalPath){
if(终止条件){
if(满足答案要求){
finalPath.push_back(path);
return;//此处不要忘记跳出循环
}
}
getOptions();
for(auot c:待选择列表){
path.push_back(c);//压入
backtracking(path,finalPath);
path.pop_back();//回溯
}
}
代码实现:
class Solution {
public:
vector<int> path;
vector<vector<int>> finalPath;
void backtracking(int start,int &n,int &k){
if(path.size()==k){
finalPath.push_back(path);
return;
}
for(int i=start;path.size()+n-i+1>=k;i++){
path.push_back(i);
backtracking(i+1,n,k);
path.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
backtracking(1,n,k);
return finalPath;
}
};

浙公网安备 33010602011771号