代码随想录算法训练营第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. };
相关推荐
CoovallyAIHub17 分钟前
避开算力坑!无人机桥梁检测场景下YOLO模型选型指南
深度学习·算法·计算机视觉
YouQian77221 分钟前
问题 C: 字符串匹配
c语言·数据结构·算法
yanxing.D26 分钟前
408——数据结构(第二章 线性表)
数据结构·算法
艾莉丝努力练剑1 小时前
【LeetCode&数据结构】二叉树的应用(二)——二叉树的前序遍历问题、二叉树的中序遍历问题、二叉树的后序遍历问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
YuTaoShao1 小时前
【LeetCode 热题 100】51. N 皇后——回溯
java·算法·leetcode·职场和发展
1 小时前
3D碰撞检测系统 基于SAT算法+Burst优化(Unity)
算法·3d·unity·c#·游戏引擎·sat
Tony沈哲1 小时前
OpenCV 图像调色优化实录:基于图像金字塔的 RAW / HEIC 文件加载与调色实践
opencv·算法
我就是全世界2 小时前
Faiss中L2欧式距离与余弦相似度:究竟该如何选择?
算法·faiss
boyedu2 小时前
比特币运行机制全解析:区块链、共识算法与数字黄金的未来挑战
算法·区块链·共识算法·数字货币·加密货币
waveee1232 小时前
学习嵌入式的第三十三天-数据结构-(2025.7.25)服务器/多客户端模型
服务器·数据结构·学习