当前位置:   article > 正文

C++ | Leetcode C++题解之第216题组合总和III

C++ | Leetcode C++题解之第216题组合总和III

题目:

题解:

  1. class Solution {
  2. private:
  3. vector<vector<int>> res;
  4. void backtracking(int k, int n, vector<int> ans){
  5. if(k == 0 || n <= 0){
  6. if(k == 0 && n == 0){
  7. res.emplace_back(ans);
  8. }
  9. return;
  10. }
  11. int start = (ans.size() == 0 ? 0 : ans.back()) + 1;
  12. for(int i = start; i < 10; i++){
  13. if(n - i < 0)break; // 加上元素i已经超过n,更大的i也就无须枚举了
  14. ans.emplace_back(i);
  15. backtracking(k - 1, n - i, ans);
  16. ans.pop_back();
  17. }
  18. }
  19. public:
  20. vector<vector<int>> combinationSum3(int k, int n) {
  21. if(n < (k + 1) * k / 2 || n > (19- k) * k / 2)return res;
  22. vector<int> ans;
  23. backtracking(k, n, ans);
  24. return res;
  25. }
  26. };
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/793343
推荐阅读
相关标签
  

闽ICP备14008679号