leetcode_combination_sum_iii 发表于 2016-12-08 难度:Medium 使用回溯法,递归调用。 1234567891011121314151617181920212223242526272829class Solution {public: vector<vector<int>> combinationSum3(int k, int n) { vector<vector<int>> ret; vector<int> cur_vec; combination_sum_3_recur(ret,k,n,cur_vec); return ret; } void combination_sum_3_recur(vector<vector<int>> &ret, int k, int rest, vector<int> &cur_vec) { if(k == 0 && rest == 0) { ret.push_back(cur_vec); // for_each(cur_vec.begin(), cur_vec.end(),[](int i){cout<<i<<" ";}); // cout<<endl; } else if(k > 0 && rest > 0) { int start = (cur_vec.empty() ? 1 : cur_vec.back()+1); for(int i = start; i <= 9; i++) { cur_vec.push_back(i); combination_sum_3_recur(ret,k-1,rest-i,cur_vec); cur_vec.pop_back(); } } }}; 0ms,超过42.38%