class Solution { private: vector<int> path; // 用来存放符合条件结果 vector<vector<int>> result;// 存放结果的集合 void backTracking (int n, int k, int startIndex) { if (path.size() == k) { result.push_back(path); return; } for (int i = startIndex; i <= n; i++) { path.push_back(i); backTracking(n, k, i + 1); path.pop_back(); } } public: vector<vector<int>> combine(int n, int k) { path.clear(); result.clear(); backTracking(n, k, 1); return result; } }; Carl的回溯算法模板 void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 } }