LeetCode 77.组合
题目链接:77.组合
踩坑:要明确当前循环遍历的集合是什么以及要向下递归传递的集合又是什么。
思路:回溯算法的经典例题。熟悉组合问题n叉树的构建。同时还引出了剪枝的操作,主要是在for循环的中间条件上动手脚。
代码:
class Solution {
public:
void backtracking(int n, int k, int start, vector<int>& path, vector<vector<int>>& result)
{
if(path.size() == k)
{
result.push_back(path);
return;
}
for(int i = start; i <= n; i++)
{
path.push_back(i);
backtracking(n, k, i+1, path, result);
path.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
vector<int> path;
vector<vector<int>> result;
backtracking(n, k, 1, path, result);
return result;
}
};