代码随想录算法训练营第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. };
相关推荐
浮生如梦_2 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
师太,答应老衲吧4 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
捕鲸叉4 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
wheeldown4 小时前
【数据结构】选择排序
数据结构·算法·排序算法
观音山保我别报错6 小时前
C语言扫雷小游戏
c语言·开发语言·算法
TangKenny7 小时前
计算网络信号
java·算法·华为
景鹤7 小时前
【算法】递归+深搜:814.二叉树剪枝
算法
iiFrankie7 小时前
SCNU习题 总结与复习
算法