LeetCode77. 组合
题目链接:77. 组合
独上高楼,望尽天涯
好久没写算法题了,需要复建一下,直接看题解顺便重新熟悉一下语法。
慕然回首,灯火阑珊
本题的代码基本上就是一个标准的回溯模板。
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
void backtracking(int n, int k, int start_index) {
if (path.size() == k) {
result.push_back(path); // 存入一种结果
return;
}
for (int i = start_index; i <= n; i++) { // for循环横向遍历
path.push_back(i); // 处理节点
backtracking(n, k, i+1); // 递归
path.pop_back(); // 回溯
}
}
public:
vector<vector<int>> combine(int n, int k) {
backtracking(n, k, 1);
return result;
}
};
剪枝操作
class Solution {
private:
vector<vector<int>> result;
vector<int> path;
void backtracking(int n, int k, int start_index) {
if (path.size() == k) {
result.push_back(path); // 存入一种结果
return;
}
for (int i = start_index; i <= n - (k - path.size()) + 1; i++) { // 剪枝操作
path.push_back(i); // 处理节点
backtracking(n, k, i+1); // 递归
path.pop_back(); // 回溯
}
}
public:
vector<vector<int>> combine(int n, int k) {
backtracking(n, k, 1);
return result;
}
};
标签:index,LeetCode77,int,day24,训练营,start,result,path,backtracking
From: https://www.cnblogs.com/BarcelonaTong/p/17067643.html