
1 /* 2 * @Author: yaodaoteng 3 * @Date: 2020-11-22 09:05:29 4 * @LastEditors: yaodaoteng 5 * @LastEditTime: 2020-11-22 09:13:32 6 * @FilePath: \leetcode\77.组合.cpp 7 */ 8 /* 9 * @lc app=leetcode.cn id=77 lang=cpp 10 * 11 * [77] 组合 12 */ 13 14 // @lc code=start 15 class Solution { 16 public: 17 //每次从集合中选取元素,可选择的范围随着选择的进行而收缩,调整可选择的范围,就是要靠startIndex 18 vector<vector<int>> res; 19 vector<int> path; 20 vector<vector<int>> combine(int n, int k) { 21 backtracking(n, k,1); 22 return res; 23 } 24 void backtracking(int n,int k,int index){ 25 if(path.size()==k){ 26 res.push_back(path); 27 return; 28 } 29 for (int i = index; i <= n;i++){// 控制树的横向遍历 30 path.push_back(i); 31 backtracking(n, k, i + 1);// 递归:控制树的纵向遍历,注意下一层搜索要从i+1开始 32 path.pop_back();// 回溯,撤销处理的节点 33 } 34 } 35 }; 36 // @lc code=end
浙公网安备 33010602011771号