题目链接:
题目描述:
输出1~n的 k 个数字的所有排列组合。
For example,
If n = 4 and k = 2, a solution is:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
思路:
回溯的基本题吧,感觉都是一个套路了。
代码:
class Solution {
public:
vector<vector<int>> res;
vector<int> cmb;
void combine(int idx,int cnt,int k,int n){
if(cnt>k){
return;
}
else if(cnt==k){
res.push_back(cmb);
}
else{
for(int i=idx;i<=n;i++){
cmb.push_back(i);
combine(i+1,cnt+1,k,n);
cmb.pop_back();
}
}
}
vector<vector<int>> combine(int n, int k) {
combine(1,0,k,n);
return res;
}
};