Leetcode 77. 组合 组合型回溯 C++实现

news2024/12/27 12:53:46

Leetcode 77. 组合

问题:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。

算法:

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

进入 dfs 函数,d 代表还需要选 d 个数字(用一共要选的数字个数 k  减去  已经选过的数字个数,也就是数组 path size)。当 d==0 时证明选完了,执行完就 return

进行递归遍历。

代码:

class Solution {
public:
    vector<vector<int>> combine(int n, int k) {
        vector<vector<int>> ans;// 返回数组ans
        vector<int> path;// 临时数组path

        auto dfs = [&](auto&&dfs,int i){
            int d = k - path.size();// 还需要选d个
            // 选好了
            if(d == 0){
                ans.emplace_back(path);// 存入ans
                return;
            }
            for(int j = i;j >= d;j--){
                path.push_back(j);// 存入path
                dfs(dfs,j - 1);// 进入下一层递归
                path.pop_back();// 恢复现场
            }
        };
        dfs(dfs,n);// 递归入口
        return ans;
    }
};

 写法2:

class Solution {
public:
    vector<vector<int>> combine(int n, int k) {
        vector<vector<int>> ans;
        vector<int> path;
        int p = 0;
        auto dfs = [&](auto &&dfs,int i,int p){
            if(p == k){
                ans.emplace_back(path);
                return ;
            }
            for(int j = i;j <= n;j++){
                path.emplace_back(j);
                dfs(dfs,j + 1,p + 1);
                path.pop_back();

                // path[p++] = j;
                // dfs(dfs,j + 1,p);
                // p--;
            }
        };
        dfs(dfs,1,0);
        return ans;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085493.html

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

相关文章

Qt QComboBox下拉菜单显示提示信息

亲测有效 void MainWindow::initCOmboBox() {QStandardItemModel *model new QStandardItemModel(this);QStandardItem *item;item new QStandardItem("1.00");item->setToolTip("黏性土");model->appendRow(item);item new QStandardItem("…

《软件工程导论》(第6版)第1章 软件工程学概述 复习笔记

第1章 软件工程学概述 一、软件危机 1&#xff0e;软件危机的介绍 &#xff08;1&#xff09;概念 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能运行的软件才具有的&#xff0c;实际上&#xff0c;几乎所有的软件都不同程度…

OpenAI GPT-3.5 “prompt“ argument not working

题意&#xff1a;"OpenAI GPT-3.5 的 prompt 参数不起作用" 问题背景&#xff1a; I am trying to make a flutter app with the openAI api that works like a chatbot, and I want to add a prompt so that the responses are more specialized, like in the open…

【系统架构师软考】计算机体系结构(二)

目录 CPU、GPU、NPU、FPGA、ASIC特性对比 SoC Cache的地址映像方法 直接映射&#xff08;Direct Mapping&#xff09; 2. 全相联映射&#xff08;Fully Associative Mapping&#xff09; 3. 组相联映射&#xff08;Set-Associative Mapping&#xff09; Cache的替换算…

刚刚!EI数据库再次更新!89本被踢,上百种期刊迎来变动

【SciencePub学术】本期热点 EI目录更新 刚刚&#xff0c;爱思唯尔更新了EI Compendex收录期刊目录。时隔近9个月&#xff0c;EI数据库才迎来了再次更新&#xff01; 此次更新后&#xff0c;目前在检连续出版/核心收录&#xff08;SERIALS&#xff09;列表共收录期刊名称5644本…

KTH5701 系列低功耗、高精度 3D 霍尔传感器

KTH5701 是一款数字输出的 3D 霍尔芯片&#xff0c;内部 分别集成了 X 轴、 Y 轴和 Z 轴三个独立的霍尔传感器。 信号链采用高精度运放通过 16 bit ADC 将模拟信号 转换成数字输出。外部主机可以采用 SPI 或 I2C 两种 模式读出测量数据。此外&#xff0c;在芯片…

大模型书籍推荐丨不会大模型私有化部署?这本大模型权威教材必看!(附PDF文档)

《ChatGLM3大模型本地化部署、应用开发与微调》作为《PyTorch 2.0深度学习从零开始学》的姊妹篇&#xff0c;专注于大模型的本地化部署、应用开发以及微调等。 本书不仅系统地阐述了深度学习大模型的核心理论&#xff0c;更注重实践应用&#xff0c;通过丰富的案例和场景&…

Gartner首次发布AI代码助手魔力象限,阿里云进入挑战者象限,通义灵码产品能力全面领先

8月29日消息&#xff0c;国际市场研究机构Gartner发布业界首个AI代码助手魔力象限&#xff0c;全球共12家企业入围&#xff0c;阿里云成为唯一进入挑战者象限的中国科技公司。通义灵码在产品功能和市场应用等方面表现优秀&#xff0c;获得权威机构认可。 该报告从技术创新性、产…

【C++类和对象】类和对象的介绍、this指针以及体会面向对象编程

文章目录 &#x1f680;类✈️类的介绍✈️类的访问限定符✈️类的封装 &#x1f680;面向对象编程&#x1f680;类与对象的联系&#x1f680;this指针✈️引出this指针✈️this指针的特性 &#x1f680;类 ✈️类的介绍 在C语言中&#xff0c;结构体中仅能声明变量并不能定义…

QT学习ubuntu qt + desktop

环境搭建 ubuntu 安装QT 遇到kit 选择不了 通过sudo apt-get install qt5-default去安装SDK的时候报错&#xff1a; Package qt5-default is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is …

【回眸】QAC软件指南——错误分析篇(完整版)

前言 近期需要再次测一下代码&#xff0c;相比以前测试更有经验&#xff0c;也做了比较多的记录&#xff0c;正好将经验通过博客保留下来&#xff0c;为以后可能的QAC测试做准备。 安装导入分析代码 这部分在上一篇中已经详细介绍&#xff0c;具体请见&#xff0c;如有疑问可…

netty编程之使用protostuff作为数据传输载体

写在前面 源码 。 本文看下使用protostuff作为数据传输的载体。 1&#xff1a;正戏 1.1&#xff1a;server server main&#xff1a; package com.dahuyou.netty.protostuff.server;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; i…

这些持续高额派息的公司,都做对了什么?

2024年&#xff0c;资产荒已成共识&#xff0c;投资者梦寐以求寻找不怕火炼的“真金”。 受此影响&#xff0c;具有业绩高确定性和高股息的资产价值凸显。银河证券策略首席分析师杨超指出&#xff0c;当前&#xff0c;投资者对于现金回报的重视程度日益提升&#xff0c;促使上…

格行“信号增强技术”引领行业创新,格行随身WiFi带你感受不一样的速度与激情,行业第一的随身WiFi并非浪得虚名!

近年来&#xff0c;随着市场保有量的不断提升与相关技术的不断扩展&#xff0c;我国随身WiFi市场已经到了发展质量更高的“2.0”阶段&#xff0c;消费者对随身WiFi的需求变得多元且“高级”。与之对应的供给端&#xff0c;品牌之间的竞争也从未停止&#xff0c;有的品牌选择卷价…

微软Power Platform使用Power Automate低代码创建API接口供外部调用获取数据

微软Power Platform使用Power Automate低代码创建API接口供外部调用获取数据 在系统的使用过程中&#xff0c;有很多的情况需要外部调用内部数据增删改查&#xff0c;这里提供一种简单的方式&#xff0c;无需编写代码即可上手操作。 首先创建一个流&#xff0c;触发器为当收到…

区块链入门

1.1 区块链技术的发展 随着 2008 年比特币(Bitcoin) 的发明,一个被称为区块链(Blockchain) 的新概念进入了人们的视野,这项新技术据信有可能彻底改变整个社会。 区块链有望对每个行业产生颠覆的影响,包括但不限于 IT、金融、政府、媒体、医疗、法律和艺术等。一个流派将区…

飞利浦开放式耳机怎么样?南卡、飞利浦、Cleer、倍思一周横评

​作为一名有着四年耳机测评经验的耳机深度用户&#xff0c;最近切实感觉到开放式耳机这个品类是真的火了&#xff0c;不过也可以理解&#xff0c;开放式耳机的佩戴舒适度不是普通入耳式耳机可比的&#xff0c;而且更加健康卫生&#xff0c;在户外使用能够方便接收环境音&#…

有了这工具,再也不用死记硬背Linux命令了

前言 传统的终端工具往往需要用户记住大量的Linux命令。每当遇到不熟悉的命令时&#xff0c;就得花时间去查阅文档或在网上搜索&#xff0c;而且查到很多内容跟问题并不相关&#xff0c;这无疑降低了工作效率。 传统终端工具的痛点 在传统的Linux终端工具中&#xff0c;用户…

【掌握未来科技脉搏!电路仿真软件:数字电路学习的秘密武器】

在日新月异的科技时代&#xff0c;数字电路作为信息技术的基础&#xff0c;其重要性不言而喻。从简单的逻辑门电路到复杂的微处理器设计&#xff0c;数字电路的学习不仅关乎理论知识&#xff0c;更在于实践操作的掌握。而今&#xff0c;借助电路仿真软件这一强大工具&#xff0…

MS1861 宏晶微 视频显示与控制器芯片 提供开发资料

MS1861是一颗集成了HD、LVDS和数字视频信号输入的芯片。输出端可以驱动MIPI(DSI-2)、LVDS、Mini-LVDS以及TTL类型的TFT-LCD液晶显示。支持输入视频信号的滤波、图像增强、锐化、对比度调节、视频缩放、裁剪、旋转、内部字符&#xff08;图形&#xff09;叠加、帧频变化等处理。…