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

news2024/9/22 4:16:56

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;// 返回数组ans
        vector<int> path;// 临时数组path
        // 剩余可选择的数字个数i,还需选的数字大小之和t
        auto dfs = [&](auto &&dfs,int i,int t){
            int d = k - path.size();// 还需选择的数字个数d
            if(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.coloradmin.cn/o/2082013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【rancher镜像】修改rancher官方镜像仓库为私有仓库

背景 在使用rancher构建k8s时&#xff0c;由于中国区网络问题经常没法访问docker的官方仓库镜像docker.io&#xff0c;而rancher在构建k8s时&#xff0c;会默认从docker.io去下载镜像&#xff0c;由于网络原因&#xff0c;构建就会存在问题&#xff0c;镜像无法下载&#xff0…

Cxx primer-chap17-Specialized Library Facilities

tuple(元组)是一个模板&#xff0c;类似于pair&#xff0c;但是支持多个member&#xff0c;其主要用于将多个数据合并成一个对象&#xff1a;不像pair访问成员是固定的&#xff08;first/second&#xff09;&#xff0c;访问tuple的成员需要使用函数模板get:bitset类比位运算方…

PDF秒变Word,你的文档编辑从此开挂!

在现代办公中&#xff0c;PDF和Word是我们最常接触的两种文件格式。PDF因其良好的兼容性和固定的格式而广受欢迎&#xff0c;但在编辑时却常常让人感到束手无策。而Word则因其强大的编辑功能成为文档处理的首选。 那么&#xff0c;如何将PDF转化为Word&#xff0c;让文档编辑更…

Linux多线程——线程的概念和控制

文章目录 线程的概念进程和线程对比 线程的控制创建线程与分配任务线程终止线程等待线程分离 pthread线程库 线程的概念 线程是我们经常听到的一个概念&#xff0c;他和进程有什么关系呢 从操作系统课本里我们可能听说过&#xff0c;线程是一个微缩版的进程&#xff0c;他拥有…

vue将二维码做成名片,并且生成图片保存

效果图 1. 安装html2canvas 首先&#xff0c;你需要在你的Vue项目中安装html2canvas。你可以通过npm或yarn来安装它&#xff1a; npm install html2canvas # 或者 yarn add html2canvas2.组件形式 2.1 创建组件 在你的Vue项目中&#xff0c;创建一个新的Vue组件&#x…

YOLO-World: Real-Time Open-Vocabulary Object Detection:实时开放词汇对象检测

YOLO系列探测器已成为高效实用的工具。然而&#xff0c;它们对预定义和训练的对象类别的依赖限制了它们在开放场景中的适用性。针对这一限制&#xff0c;我们引入了YOLO-World&#xff0c;这是一种创新方法&#xff0c;通过视觉语言建模和大规模数据集的预训练&#xff0c;增强…

深度学习入门-10

基于小土堆学习 池化层学习 池化层&#xff08;Pooling Layer&#xff09;是卷积神经网络&#xff08;CNN&#xff09;中的一种重要组件&#xff0c;它的主要作用是逐步减小数据的空间尺寸&#xff08;即高度和宽度&#xff09;&#xff0c;以减少网络中参数的数量和计算量&a…

OpenCV绘图函数(2)绘制圆形函数circle()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 绘制一个圆。 cv::circle 函数用于绘制一个给定中心和半径的简单圆或填充圆。 函数原型 void cv::circle (InputOutputArray img,Point cen…

a探索Python中的DOM操作神器:pyquery

文章目录 探索Python中的DOM操作神器&#xff1a;pyquery背景&#xff1a;为什么选择pyquery&#xff1f;pyquery是什么&#xff1f;如何安装pyquery&#xff1f;五个简单的pyquery函数使用方法场景应用&#xff1a;pyquery在实际开发中常见bug及解决方案总结 探索Python中的DO…

游泳耳机哪个牌子好?四大爆款游泳耳机实测,优缺点秒懂!

在快节奏的现代生活中&#xff0c;游泳不仅是一种锻炼身体的方式&#xff0c;更是一种放松心情、享受宁静的休闲活动。而音乐&#xff0c;作为情感的载体&#xff0c;其在游泳过程中的陪伴&#xff0c;无疑能够让人更加沉浸于水下的宁静与自由。因此&#xff0c;一款性能优越、…

积鼎科技携手潍柴动力的喷嘴雾化模拟项目荣获2024年数字仿真卓越应用奖

近日&#xff0c;积鼎科技携手潍柴动力股份有限公司&#xff08;以下简称“潍柴动力”&#xff09;&#xff0c;凭借创新的喷嘴雾化一体化模拟仿真项目&#xff0c;其成果价值赢得了行业专家的一致认可&#xff0c;成功荣获2024年度数字仿真科技奖卓越应用奖。潍柴动力作为中国…

唯创知音在线TTS方案简介及测试版操作说明

一&#xff1a;背景介绍 在物联网与智能设备日新月异的今天&#xff0c;音频传输与控制技术成为了提升用户体验的关键环节。WT2605C蓝牙音频更新方案&#xff0c;凭借其强大的功能集与高效的交互设计&#xff0c;为两轮电动车、电子锁、提示器、智能安防等多个领域带来了前所未…

OpenAI将禁止中国使用ChatGPT了,你知道吗?

由于政策、法律原因&#xff0c;2024年7月9日以后OpenAI将禁止中国使用ChatGPT 以及调用相关接口&#xff0c;这样的话国内就没法使用ChatGPT 开发应用了。 不过不要急&#xff0c;国内有很多类似ChatGPT 的AI大模型&#xff0c;比如&#xff1a;文心一言、通义千问、ChatGLM、…

计算机毕业设计选题推荐-救援物资管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

ACCESS 工具注入实战 凡诺靶场

简介 Access数据库注入攻击是一种常见的网络安全&#xff0c;通过注入SQL代码来获取未授权的数据访问权限。这种攻击利用了应用程序与数据库之间的交互漏洞&#xff0c;攻击者通过输入特定的SQL代码片段来操纵数据库查询&#xff0c;从而绕过应用程序的安全机制&#xff0c;获取…

如何把控调整Facebook广告预算的正确时机

对于如何调整Facebook广告预算&#xff0c;之前我们已经出过几篇文章了&#xff0c;关注我们的朋友应该已经有了一定的了解&#xff0c;但对于什么时候该调整预算&#xff0c;什么时候该暂停广告&#xff0c;有些投手可能还无法准确的把控这个时机&#xff0c;特别是有的新手&a…

怎么把mp4转换成mp3?5种转换方法教会你

我们时常需要从视频中提取音频&#xff0c;比如将电影配乐、教学视频中的讲解或是喜爱的歌曲MV转换为MP3格式&#xff0c;以便在不同设备上播放或编辑。那么怎么把一个视频中的音频提取出来变成mp3格式呢&#xff1f;别着急&#xff0c;教大家5种简单高效转换方法&#xff0c;一…

SQLi-LABS靶场36-40通过攻略

less-36 这一关是转义函数换成了mysql_real_escape_string,绕过方法与35关一致 1.判断注入点 2.判断闭合方式 id1A0 -- 3.查看页面回显点 ?id-1%A0%27%20%20union%20select%201,2,3-- 4.查询数据库名 ?id-1%A0%27%20%20union%20select%201,database(),3-- 5.查询数据库的…

Qt20窗口相关位置函数

窗口相关位置函数 知识点geometry.hgeometry.cppmain.cpp运行图 知识点 geometry().x() 多屏幕实现方法 #include <QWidget> #include <QPoint> #include <QScreen> // 假设这个函数是某个QWidget的子类中的成员函数 void MyWidget::showGlobalXPos…

【生日视频制作】美女车模特举牌AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程美女车模特举牌AE模板改字广软件告生成器素材 怎么如何做的【生日视频制作】美女车模特举牌AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 安装AE软件下载AE模板把AE模板导入AE软件修改图片或文字渲染出视频