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;
}
};
LeetCode:77.組合
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.