代码随想录算法训练营第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=digitsindex-'0';
  13. string letters=mapdigit;
  14. for(int i=0;i<letters.size();i++){
  15. s.push_back(lettersi);
  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 小时前
栈的应用(表达式求值)
数据结构·算法
xiaowang1234shs3 小时前
怪兽轻断食技术深度测评:从断食计时引擎到AI识别算法的工程实践解析
数据库·人工智能·算法·macos·机器学习·p2p·visual studio
小果因子实验室3 小时前
量化研究--策略迁移算法1研究
算法
Web极客码3 小时前
如何用三段式确定性剪枝,为 LLM Agent 砍掉 35% 的 Token 成本?
服务器·人工智能·算法·机器学习
程序猿乐锅3 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
wabs6664 小时前
关于图论【广度优先搜索的理论基础】
算法·图论·宽度优先
孤魂2334 小时前
逻辑回归算法
算法·机器学习·逻辑回归
weixin_377634844 小时前
【多模型预测】 如何合理融合多个预测分值
算法·机器学习·概率论·预测·agent预测
无风听海4 小时前
Claude Agent Skills 的四种设计模式;从渐进式披露到最小权限
java·算法·设计模式
37.2℃9955 小时前
专业的Claude Design解决方案
前端·算法