思路:回溯 + 剪枝
- 此题是经典的“以数组最后一个元素作为叶子节点”的组合类型回溯问题
 - 每个数字最多只可以用一次,所以循环从
cur_index开始循环 - 脑子里面要有图,这题就不画了,可以看其他类似题目中画的图
 - 
代码:
class Solution {public:void backTrace(vector<vector<int>>& combina_vector ,vector<int>& cur_combina, int cur_index , int k, int n) {if (cur_index > 10) {return;}if (cur_combina.size() == k) {// cout << accumulate(cur_combina.begin(), cur_combina.end(), 0) << endl;if (accumulate(cur_combina.begin(), cur_combina.end(), 0) == n) {combina_vector.push_back(cur_combina);}return;}for (int i = cur_index ;i <= 9; i++) {cur_combina.push_back(i);backTrace(combina_vector, cur_combina, i + 1, k, n);cur_combina.pop_back();}}vector<vector<int>> combinationSum3(int k, int n) {vector<vector<int>> combina_vector;vector<int> cur_combina;backTrace(combina_vector, cur_combina, 1, k, n);return combina_vector;}};
 
