当前位置: 首页 > news >正文

Leetcode 216.组合总和Ⅲ 回溯+剪枝 C++实现

Leetcode 216.组合总和Ⅲ

问题:找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

  • 只使用数字 1 到 9
  • 每个数字 最多使用一次 

返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

算法:

创建二维返回数组 ans ,临时数组 path

进入函数 dfs ,边界条件是 d==0 即剩余应选数字个数为 ,则可以 return 。如果剩余数字不符合条件,则直跳过,进入下一个循环。

代码:

class Solution {
public:vector<vector<int>> combinationSum3(int k, int n) {vector<vector<int>> ans;// 返回数组ansvector<int> path;// 临时数组path// 剩余可选择的数字个数i,还需选的数字大小之和tauto dfs = [&](auto &&dfs,int i,int t){int d = k - path.size();// 还需选择的数字个数dif(t < 0 || t > (2*i-d+1)*d/2)  return ;// 剩余数字不符合// 选好了if(d == 0){ans.emplace_back(path);return ;}for(int j = i;j >= d;j--){path.push_back(j);dfs(dfs,j-1,t-j);path.pop_back();// 恢复现场}};dfs(dfs,9,n);return ans;}
};

http://www.mrgr.cn/news/14817.html

相关文章:

  • k8s集群环境搭建(一主二从--kubeadm安装)
  • 分享5款支持论文写作网站先稿后付的网站!
  • [000-01-001].第04节:Shell中的内置命令
  • Android架构组件:MVVM模式的实战应用与数据绑定技巧
  • Pytest项目搭建总结
  • WireShark网络分析~环境搭建
  • 【C++ | 设计模式】工厂方法模式的详解与实现
  • C# 变量
  • 【Python入门】第5节 数据容器
  • 三. Spring Boot 当中的“容器功能” 和 “配置绑定” 的详细剖析(附+源代码流程)
  • C# for语句
  • 一款支持固定区域,固定尺寸大小重复截图的软件
  • SoftMaker Office Pro 2024:高效办公的全方位解决方案
  • 【PHP报错已解决】‘/www/wwwroot/xxxxxx/public/../thinkphp/start.php‘
  • Spring Boot应用中集成与使用多数据源
  • Flink优化之--旁路缓存和异步IO
  • 回顾MVC
  • Linux下数据库相关知识点及SQLite3相关知识,及cakkback回调函数
  • 15天速通java基础:java(J2SE)阶段学习总结(数据类型、数组、方法、面向对象、异常处理、容器、流、多线程、网络编程)
  • 【STM32】一些外设通用内容