力扣第20天----第77题
一、第77题–组合
有递归就有回溯,回溯与递归同时发生。类似于二叉树的递归法(DFS),回溯也是三部曲----参数及返回值、终止条件、单层逻辑。通常回溯的返回值都是void,对全局变量进行回溯。
class Solution {
public:
vector<vector<int>> result;
vector<int> path;
void backingtrace(int n , int k, int start_index){
if (path.size() == k){ // 终止条件,找到k个数
result.push_back(path);
}
for(int i=start_index; i<= n; i++){
path.push_back(i); //插入一个值,然后递归到下一循环
backingtrace(n , k, i+1); //下一个起始节点,i+1
path.pop_back(); //回溯,恢复现场,进行下一个点判断。
}
}
vector<vector<int>> combine(int n, int k) {
backingtrace(n, k, 1);
return result;
}
};