LeetCode OJ--Combinations *

https://oj.leetcode.com/problems/combinations/

给一个集合,求个数为k的所有子集

递归调用,深搜

 class Solution {
public:
        vector<vector<int> > combine(int n, int k){
        vector<vector<int> > ans;
        if(n==0 || n<k)
            return ans;

        vector<int> ansPiece;

        if(n==k)
        {
            for(int i = 1;i<=n;i++)
            {
                ansPiece.push_back(i);
            }
            ans.push_back(ansPiece);
            return ans;
        }
       
        combination2(ans,k,1,ansPiece,n);
        
        return ans;
    }
    void combination2(vector<vector<int> > &ans,int targetLen,int pivot,vector<int> &ansPiece,int n)
    {
        if(targetLen == ansPiece.size())
        {
            ans.push_back(ansPiece);
            return;
        }
        if(pivot > n)
            return;

        combination2( ans,targetLen,pivot+1,ansPiece,n);

        ansPiece.push_back(pivot);
        combination2( ans,targetLen,pivot+1,ansPiece,n);
        ansPiece.pop_back();
    }
};
原文地址:https://www.cnblogs.com/qingcheng/p/3811301.html