代码随想录算法训练营第36期DAY28

DAY28

216组合总和-iii

未剪枝,注意i=startindex开始:

  1. class Solution {
  2. private:
  3. vector<vector<int>> result;
  4. vector<int> path;
  5. void backtracking(int k,int sum,int targetsum,int startindex){
  6. if(path.size()==k){
  7. if(sum==targetsum){
  8. result.push_back(path);
  9. }
  10. return;
  11. }
  12. for(int i=startindex;i<=9;i++)
  13. {
  14. sum+=i;
  15. path.push_back(i);
  16. backtracking(k,sum,targetsum,i+1);
  17. sum-=i;
  18. path.pop_back();
  19. }
  20. return ;
  21. }
  22. public:
  23. vector<vector<int>> combinationSum3(int k, int n) {
  24. result.clear();
  25. path.clear();
  26. backtracking(k,0,n,1);
  27. return result;
  28. }
  29. };

剪枝版:

  1. class Solution {
  2. private:
  3. vector<vector<int>> result;
  4. vector<int> path;
  5. void backtracking(int k,int sum,int targetsum,int startindex){
  6. if(path.size()==k){
  7. if(sum==targetsum){
  8. result.push_back(path);
  9. }
  10. return;
  11. }
  12. for(int i=startindex;i<=9-(k-path.size())+1;i++)
  13. {
  14. sum+=i;
  15. path.push_back(i);
  16. if(sum>targetsum){
  17. sum-=i;
  18. path.pop_back();
  19. return;
  20. }
  21. backtracking(k,sum,targetsum,i+1);
  22. sum-=i;
  23. path.pop_back();
  24. }
  25. return ;
  26. }
  27. public:
  28. vector<vector<int>> combinationSum3(int k, int n) {
  29. result.clear();
  30. path.clear();
  31. backtracking(k,0,n,1);
  32. return result;
  33. }
  34. };

17电话号码的字母组合

  1. class Solution {
  2. private:
  3. vector<string> map={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
  4. vector<string> result;
  5. string s;
  6. void backtracking(string digits,int index){
  7. //待二刷
  8. if(index==digits.size()){
  9. result.push_back(s);
  10. return ;
  11. }
  12. int digit=digits[index]-'0';
  13. string letters=map[digit];
  14. for(int i=0;i<letters.size();i++){
  15. s.push_back(letters[i]);
  16. backtracking(digits,index+1);
  17. s.pop_back();
  18. }
  19. }
  20. public:
  21. vector<string> letterCombinations(string digits) {
  22. s.clear();
  23. result.clear();
  24. if(digits.size()==0){
  25. return result;
  26. }
  27. backtracking(digits,0);
  28. return result;
  29. }
  30. };
相关推荐
冉佳驹1 小时前
数据结构 ——— 快速排序的时间复杂度以及规避最坏情况的方法
c语言·数据结构·算法·排序算法·快速排序算法·三数取中
徐浪老师2 小时前
C语言实现冒泡排序:从基础到优化全解析
c语言·算法·排序算法
hr_net2 小时前
图论入门编程
算法·图论
李小白662 小时前
各种排序算法
数据结构·算法·排序算法
浪前2 小时前
排序算法之冒泡排序篇
数据结构·算法·排序算法
小黄编程快乐屋2 小时前
各个排序算法基础速通万字介绍
java·算法·排序算法
PeterClerk2 小时前
图论基础知识
算法·深度优先·图论
是糖不是唐2 小时前
代码随想录算法训练营第五十八天|Day58 图论
c语言·算法·图论
Eric.Lee20214 小时前
数据集-目标检测系列- 装甲车 检测数据集 armored_vehicles >> DataBall
python·算法·yolo·目标检测·装甲车检测
慢慢来_6 小时前
【力扣热题100】[Java版] 刷题笔记-448. 找到所有数组中消失的数字
笔记·算法·leetcode