combinations:给定两个正整数n,k;从1到n中取出k个数的所有组合

解答这题巧妙运用了递归、回溯,可以对回溯有个更好的理解
https://blog.csdn.net/lindaxym/article/details/80951872

class Solution {
public:
vector<vector<int> > combine(int n, int k) {
vector<vector<int>>vv;
if(n<k||n<1||k<1){
return vv;
}
vector<int>v;
findCombine(1,n,k,v,vv);
return vv;
}

void findCombine(int x,int &n,int &k,vector<int> &v,vector<vector<int>> &vv){
    if(v.size()==k){
        vv.push_back(v);
        return ;
    }
    for(int i=x;i<=n;i++){
        v.push_back(i);
        findCombine(i+1,n,k,v,vv);
        v.pop_back();
    }
    return ;
}

};

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容