https://www.cnblogs.com/grandyang/p/4332522.html
数字从1到n,生成所有具有k个的组合
本质上跟subsets更像,因为回溯回来只能选下一个位置的数值,可选择的数值在减少,搜索树的形状与subsets更像。
不同的是, 不是所有的节点都是可行解了,而是第k层所有的节点。
class Solution { public: vector<vector<int>> combine(int n, int k) { vector<vector<int> > result; if(n <= 0 || k <= 0 || n < k) return result; vector<int> res; int level = 1; combine(n,k,result,res,level); return result; } void combine(int n,int k,vector<vector<int> >& result,vector<int> res,int level){ if(res.size() == k){ result.push_back(res); return; } for(int i = level;i <= n;i++){ res.push_back(i); combine(n,k,result,res,i+1); res.pop_back(); } } };