Combinations

/*
题意:给两个数n,和k,求1-n的组合情况
解法:递归求解
*/
class Solution {
public:
    vector<vector<int> >res;
    int count;
    void Comb(int A[],int n,int k,int step){
        if(step == k){//找到一种情况
            res.push_back(vector<int>());
            for(int i = 0 ; i < k ; i++){
                res[count].push_back(A[i]);
            }
            count++;
            return ;
        }
        for(int i = (step == 0)?1:A[step-1]+1; i<=n ; i++){
                A[step] = i;
                Comb(A,n,k,step+1);
        }
    }
    vector<vector<int> > combine(int n, int k) {
        int A[k+1];
        count = 0;
        Comb(A,n,k,0);
        return res;
    }
};
原文地址:https://www.cnblogs.com/llei1573/p/4432749.html