class Solution {
public:
vector<vector<int>>res;
//求解C(n,k),当前已经找到的组合存储在c中,需要从start开始搜索新的元素
void generateCombinations(int n,int k,int start,vector<int> &c){
if(c.size()==k){
//如果找到了一个组合,就将其存储在结果res中
res.push_back(c);//递归终止
return ;
}
//回溯算法递归过程
for(int i=start;i<=n;i++)
{
c.push_back(i);
generateCombinations(n,k,i+1,c);//递归调用
//回溯
c.pop_back();
}
return;
}
vector<vector<int>> combine(int n, int k) {
res.clear();
if(n<=0||k<=0||k>n){
return res;
}
vector<int>c;//存储临时的生成的组合
generateCombinations(n,k,1,c);
return res;
}
};
回溯思想的应用:003.LeetCode:77.组合
最新推荐文章于 2024-08-07 20:37:10 发布