给你一个范围1-n,然后从中选k个数,有多少种组合。
直接用递归。
class Solution {
public:
void dfs(int step,int kk,int nn,int limit,vector<int>temp,vector<vector<int>>&ans){
if(step==kk){ans.push_back(temp);return ;}
for(int ii=1;ii<=nn;ii++){
if(ii<=limit)continue;
if(step+1>temp.size())temp.push_back(ii);
else temp[step]=ii;
dfs(step+1,kk,nn,ii,temp,ans);
}
}
vector<vector<int>> combine(int n, int k) {
vector<vector<int>>ans;
vector<int>temp;
dfs(0,k,n,0,temp,ans);
return ans;
}
};