递归+回溯 挺简单的吧

class Solution {
public:
vector<vector<int>>res;
vector<int>num;
vector<int>temp;
void combination(int index, int k) {
if (k == 0) {
res.push_back(temp);
return;
}
for (int i = index; i < num.size(); ++i) {
temp.push_back(num[i]);
combination(i + 1,k - 1);
temp.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
for (int i = 1; i <= n; ++i)num.push_back(i);
combination(0, k);
return res;
}
};