77. 组合
对着 在 回溯算法理论基础 给出的 代码模板,来做本题组合问题,大家就会发现 写回溯算法套路。
在回溯算法解决实际问题的过程中,大家会有各种疑问,先看视频介绍,基本可以解决大家的疑惑。
本题关于剪枝操作是大家要理解的重点,因为后面很多回溯算法解决的题目,都是这个剪枝套路。
题目链接/文章讲解:代码随想录
视频讲解:带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!_哔哩哔哩_bilibili
剪枝操作:带你学透回溯算法-组合问题的剪枝操作(对应力扣题目:77.组合)| 回溯法精讲!_哔哩哔哩_bilibili
class Solution {
public:
void Traversal(int indexstart,int n,int k,vector<int>&path,vector<vector<int>>&res){
if (path.size()==k){
res.push_back(path);
return;
}
for (int i=indexstart;i<=n;i++){
path.push_back(i);
Traversal(i+1,n,k,path,res);
path.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
vector<vector<int>>res;
vector<int>path;
Traversal(1,n,k,path,res);
return res;
}
};
总结
之前刷的回溯题还是没有忘记的。