一,問題描述
二,問題分析
與排列問題類似,但是排列問題考慮的是數組間元素的順序,而組合問題考慮的是數組中不同的數字
三,問題解答
class Solution {
private:
vector<vector<int>> res; //用來保存所有的組合
void dfs(int n,int k,int index,vector<int> &c){
//遞歸結束條件
if(c.size() == k){
res.push_back(c);
return;
}
//遞歸的主體部分
for(int i = index;i<=n;i++){
c.push_back(i);
dfs(n,k,i+1,c); //i之間的數都已經被考慮過了
c.pop_back();
}
return;
}
public:
vector<vector<int>> combine(int n, int k) {
res.clear();
if(n<0 || k<0||k>n) return res;
vector<int> c;
dfs(n,k,1,c);
return res;
}
};