1 题目描述
给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合
2 解题思路
dfs
3 代码实现
class Solution {
public:
/**
*
* @param n int整型
* @param k int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > combine(int n, int k) {
// write code here
vector<vector<int>> perm_list;
vector<int> perm;
dfs(n, 1, k, perm, perm_list);
return perm_list;
}
void dfs(int n, int begin, int end,
vector<int> &perm, vector<vector<int>> &perm_list){
if(end == 0)
perm_list.push_back(perm);
else
for(int i = begin; i <= n - end + 1; i++){
perm.push_back(i);
dfs(n, i + 1, end - 1, perm, perm_list);
perm.pop_back();
}
}
};
4 运行结果
运行时间:2ms
占用内存:348k