DFS,跟求子集合的方法类似,对于任意一个元素,要么选,要么不选。
代码:
1 vector<vector<int> > res; 2 3 void solve(vector<int> ans, int n, int curr, int left) { 4 if (left == 0) 5 res.push_back(ans); 6 else if (n - curr + 1 >= left) { 7 solve(ans, n, curr + 1, left); 8 ans.push_back(curr); 9 solve(ans, n, curr + 1, left - 1); 10 } 11 } 12 13 vector<vector<int> > combine(int n, int k) { 14 solve(vector<int>(), n, 1, k); 15 return res; 16 }