(1)回溯
class Solution {
private:
vector<vector<int>> vec;
public:
void helper(vector<int> &num,vector<int> &v,int k,int index,int l) {
if(k==0) {
vec.push_back(v);
return;
}
for(int i=l;i<num.size();i++) {
v[index]=num[i];
helper(num,v,k-1,index+1,i+1);
}
return;
}
vector<vector<int>> combine(int n, int k) {
vector<int> num(n,0),v(k,0);
for(int i=0;i<n;i++) {
num[i]=i+1;
}
helper(num,v,k,0,0);
return vec;
}
};

本文介绍了一个使用回溯算法解决组合问题的方法。通过递归函数helper实现了从整数集合中找出所有可能的k个数组合。定义了Solution类,并在其中实现了combine函数,该函数接收两个参数n和k,返回所有可能的组合。
&spm=1001.2101.3001.5002&articleId=117029970&d=1&t=3&u=9a7c8dbaa02c4d5ab4be12a60223df69)
7764

被折叠的 条评论
为什么被折叠?



