题目:
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
例:
输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
来源:
解题思路:回溯
想用暴力搜索解决,但还是无从下手,这时我们采用回溯的办法解决。
回溯配合递归使用,递归前访问,递归后回溯。访问与回溯是一对相反操作。
代码一:
class Solution {
public:
vector< vector<int> > result;
vector<int> path;
vector< vector<int> > combine(int n, int k) {
go(n, k, 1);
return result;
}
void go(int n, int k, int start) {
if (path.size() == k) {
// 保存结果
result.push_back(path);
return;
}
for (int i = start; i <&#