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(); } };