当前位置:   article > 正文

代码随想录算法训练营第二十五天 | 216.组合总和III、17.电话号码的字母组合

代码随想录算法训练营第二十五天 | 216.组合总和III、17.电话号码的字母组合

关于回溯的练习:

77. 组合

  1. class Solution {
  2. public:
  3. vector<vector<int>> paths;
  4. vector<int> path;
  5. void backtracking(int n, int k, int startIndex) {
  6. if(path.size()==k) {
  7. paths.push_back(path);
  8. return;
  9. }
  10. for(int i=startIndex; i<=n; ++i) {
  11. path.push_back(i);
  12. backtracking(n, k, i+1);
  13. path.pop_back();
  14. }
  15. }
  16. vector<vector<int>> combine(int n, int k) {
  17. backtracking(n, k, 1);
  18. return paths;
  19. }
  20. };

216. 组合总和 III

  1. class Solution {
  2. public:
  3. // 合为n 1-9个数 k个选择
  4. vector<vector<int>> paths;
  5. vector<int> path;
  6. void backtracking(int n, int k, int curSum, int startIndex) {
  7. if(curSum>n) {
  8. return;
  9. }
  10. if(path.size()==k) {
  11. if(curSum==n)
  12. paths.push_back(path);
  13. return;
  14. }
  15. for(int i=startIndex; i<=9; ++i) {
  16. curSum += i;
  17. path.push_back(i);
  18. backtracking(n, k, curSum, i+1);
  19. curSum -= i;
  20. path.pop_back();
  21. }
  22. }
  23. vector<vector<int>> combinationSum3(int k, int n) {
  24. backtracking(n, k, 0, 1);
  25. return paths;
  26. }
  27. };

17. 电话号码的字母组合

  1. class Solution {
  2. public:
  3. // 第startIndex个字符 总长度 digits.size()
  4. vector<string> paths;
  5. string path;
  6. vector<string> myvect = {
  7. "",
  8. "",
  9. "abc",
  10. "def",
  11. "ghi",
  12. "jkl",
  13. "mno",
  14. "pqrs",
  15. "tuv",
  16. "wxyz"
  17. };
  18. void backtracking(string& digits, int startIndex) {
  19. if(path.size()==digits.size()) {
  20. paths.push_back(path);
  21. return;
  22. }
  23. int index = digits[startIndex] - '0';
  24. string first = myvect[index];
  25. for(int i=0; i<first.size(); ++i) {
  26. path.push_back(first[i]);
  27. backtracking(digits, startIndex+1);
  28. path.pop_back();
  29. }
  30. }
  31. vector<string> letterCombinations(string digits) {
  32. if(digits.size()==0) {
  33. return {};
  34. }
  35. backtracking(digits, 0);
  36. return paths;
  37. }
  38. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/299647
推荐阅读
相关标签
  

闽ICP备14008679号