下面展示一些 内联代码片
。
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
class Solution {
public:
vector<int>path;
vector<vector<int>>result;
void huisu(int n,int k,int startindex){//回溯法经典问题
if(path.size()==k){
result.push_back(path);
return;
}
for(int i=startindex;i<=n-(k-path.size())+1;i++){//剪枝
path.push_back(i);
huisu(n,k,i+1);
path.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k) {
path.clear();
result.clear();
huisu(n,k,1);
return result;
}
};