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

组合(力扣77)

从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。

那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家,必须先有递归,才会有回溯。而这里的递归就是在题目所给集合的子集中使用for循环选择数字。考虑组合的无序性(1,2和2,1是相同的组合),那么在对递归得到的子集进行遍历时,需要用变量控制for循环的起始位置。另外,如果题目说明不能取重复数字,那么在对该控制变量赋值时,需要注意。举个例子:最开始的集合有1,2,3,4,那么我们第一次一定是从这个集合中选一个数。为了保证之后不重复选择1,我们下一步一定是从2,3,4这个集合中选一个数,以此类推。我们可以发现递归得到的子集范围在不断缩小。接下来讲一下回溯,我们需要写一个for循环将递归函数包起来,这个for循环的作用是遍历当前集合的所有数,假设在第一个集合中我们已经选了1这个数,然后递归选择第二个数,那么在选择第二个数的递归函数结束之后,我们可以将1弹出存储组合的数组,并通过for循环选择第一个集合中的第二个数,这样就得到了其他组合情况。这道题大家可以当做模版题记下来,之后的回溯算法的代码风格都与这道题大差不差。可以结合我下面的代码及注释理解这道题。

代码及注释如下:

class Solution {
private:vector<vector<int>> result; // 存放符合条件结果的集合vector<int> path; // 用来存放符合条件结果void backtracking(int n, int k, int startIndex) {if (path.size() == k) {result.push_back(path);return;}for (int i = startIndex; i <= n; i++) {path.push_back(i); // 处理节点backtracking(n, k, i + 1); // 递归path.pop_back(); // 回溯,撤销处理的节点}}
public:vector<vector<int>> combine(int n, int k) {result.clear(); // 可以不写path.clear();   // 可以不写backtracking(n, k, 1);return result;}
};

相关文章:

组合(力扣77)

从这道题开始&#xff0c;我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢&#xff0c;而这里我们将使用回溯算法解决很多经典问题。 那么这道题是如何使用回溯算法的呢&#xff1f;在讲回溯之前&#xff0c;先说明一下此题是如何递归的。毕竟回溯递归不分家&a…...

网络工程师 (22)网络协议

前言 网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合&#xff0c;它规定了通信时信息必须采用的格式和这些格式的意义。 一、基本要素 语法&#xff1a;规定信息格式&#xff0c;包括数据及控制信息的格式、编码及信号电平等。这是协议的基础&#xff0c;确…...

Linux之文件IO前世今生

在 Linux之文件系统前世今生&#xff08;一&#xff09; VFS中&#xff0c;我们提到了文件的读写&#xff0c;并给出了简要的读写示意图&#xff0c;本文将分析文件I/O的细节。 一、Buffered I/O&#xff08;缓存I/O&#xff09;& Directed I/O&#xff08;直接I/O&#…...

如何在Windows中配置MySQL?

MySQL是一个广泛使用的开源关系型数据库管理系统&#xff0c;它支持多种操作系统平台&#xff0c;其中包括Windows。无论是开发者进行本地开发&#xff0c;还是管理员为应用程序配置数据库&#xff0c;MySQL都是一个非常流行的选择。本篇文章将详细介绍如何在Windows操作系统中…...

Kafka 入门与实战

一、Kafka 基础 1.1 创建topic kafka-topics.bat --bootstrap-server localhost:9092 --topic test --create 1.2 查看消费者偏移量位置 kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group test 1.3 消息的生产与发送 #生产者 kafka-cons…...

数学知识学习1

1、数论 1质数判定 i<n/i优化O(sqrt(n)) bool is_prime(int n){if(n<2)return false;for(int i2;i<n/i;i){if(n%i0)return false;} true; } 分解质因数 i<n/i优化O(sqrt(n)) // 定义一个函数 divide&#xff0c;接收一个整数 n 作为参数&#xff0c;用于分解质…...

【AI日记】25.02.08

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 AI 应用探索周二有个面试&#xff0c;明后天打算好好准备一下&#xff0c;我打算主要研究下 AI 如何在该行业赋能和应用&#xff0c;以及该行业未来的发展前景和公司痛点&#…...

Lecture8 | LPV VXGI SSAO SSDO

Review: Lecture 7 | Lecture 8 LPV (Light Propagation Volumes) Light Propagation Volumes(LPV)-孤岛惊魂CryEngine引进的技术 LPV做GI快|好 大体步骤&#xff1a; Step1.Generation of Radiance Point Set Scene Representation 生成辐射点集的场景表示&#xff1a;辐射…...

Java中实现定时锁屏的功能(可以指定时间执行)

Java中实现定时锁屏的功能&#xff08;可以指定时间执行&#xff09; 要在Java中实现定时锁屏的功能&#xff0c;可以使用java.util.Timer或java.util.concurrent.ScheduledExecutorService来调度任务&#xff0c;并通过调用操作系统的命令来执行锁屏。下面我将给出一个基本的…...

Java集合List详解(带脑图)

允许重复元素&#xff0c;有序。常见的实现类有 ArrayList、LinkedList、Vector。 ArrayList ArrayList 是在 Java 编程中常用的集合类之一&#xff0c;它提供了便捷的数组操作&#xff0c;并在动态性、灵活性和性能方面取得了平衡。如果需要频繁在中间插入和删除元素&#xf…...

[实验日志] VS Code 连接服务器上的 Python 解释器进行远程调试

目录 0. 前言 1. 环境 2. 准备工作 2.1 安装VS Code 2.2 安装插件 2.3 配置远程服务器 2.4 修改设置 2.5 打开远程调试窗口 3. 调试代码 3.1 输密码 3.2 打开服务器文件夹 3.3 配置Python环境 3.4 调试Python代码 补充&#xff1a;使用调试控制台&#xff0c;查看…...

(14)gdb 笔记(7):以日志记录的方式来调试多进程多线程程序,linux 命令 tail -f 实时跟踪日志

&#xff08;44&#xff09;以日志记录的方式来调试多进程多线程程序 &#xff1a; 这是老师的日志文件&#xff0c;可以用来模仿的模板&#xff1a; &#xff08;45&#xff09;实时追踪日志的 tail -f 命令&#xff1a; &#xff08;46&#xff09; 多种调试方法结合起来用 …...

Sentinel的安装和做限流的使用

一、安装 Release v1.8.3 alibaba/Sentinel GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - Release v1.8.3 alibaba/Sentinelhttps://github.com/alibaba/Senti…...

四柱预测学

图表 后天八卦 十二地支不仅代表了时间,还代表了方位。具体来说: ‌子‌:代表正北方‌丑寅‌:合起来代表东北方‌卯‌:代表正东方‌辰巳‌:合起来代表东南方‌午‌:代表正南方‌未申‌:合起来代表西南方‌酉‌:代表正西方‌戌亥‌:合起来代表西北方‌四季-五行-六神…...

【个人开发】macbook m1 Lora微调qwen大模型

本项目参考网上各类教程整理而成&#xff0c;为个人学习记录。 项目github源码地址&#xff1a;Lora微调大模型 项目中微调模型为&#xff1a;qwen/Qwen1.5-4B-Chat。 去年新发布的Qwen/Qwen2.5-3B-Instruct同样也适用。 微调步骤 step0: 环境准备 conda create --name fin…...

sqli-labs靶场实录(二): Advanced Injections

sqli-labs靶场实录: Advanced Injections Less21Less22Less23探测注入点 Less24Less25联合注入使用符号替代 Less25aLess26逻辑符号绕过and/or过滤双写and/or绕过 Less26aLess27Less27aLess28Less28aLess29Less30Less31Less32&#xff08;宽字节注入&#xff09;Less33Less34Le…...

Linux系统 环境变量

环境变量 写在前面概念查看环境变量main函数的参数argc & argvenv bash环境变量 写在前面 对于环境变量&#xff0c;本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”&#xff0c;我们会更详细讲解&#xff1b;理解环境变量的全局…...

机器学习-线性回归(最大似然估计)

机器学习任务可以分为两类: 一类是样本的特征向量 &#x1d499; 和标签 &#x1d466; 之间存在未知的函数关系&#x1d466; h(&#x1d499;)&#xff0c;另一类是条件概率&#x1d45d;(&#x1d466;|&#x1d499;)服从某个未知分布。最小二乘法是属于第一类&#xff0c…...

【信息系统项目管理师-案例真题】2017上半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题1】8 分【问题2】4 分【问题3】8 分【问题4】5 分试题二【问题1】10 分【问题2】8 分【问题3】6 分【问题4】5 分试题三【问题1】5 分【问题2】7 分【问题3】6 分【问题4】3 分试题一 阅读下列说明…...

CSP晋级组比赛生成文件夹与文件通用代码Python

快速生成文件夹与文件的脚本 import sys import osmyfiles sys.argv[1::] for f in myfiles:os.mkdir(f)os.system(f"touch {f}/{f}.in")os.system(f"touch {f}/{f}.out")os.system(f"touch {f}/{f}.cpp")with open("template.cpp",…...

工业缺陷检测实战:用‘非均衡’数据增强搞定样本不足与类别不平衡难题

工业缺陷检测实战&#xff1a;破解样本不足与类别失衡的数据增强策略 在半导体、汽车零部件等精密制造领域&#xff0c;一个肉眼难辨的微小缺陷可能导致整批产品报废。传统人工质检不仅效率低下&#xff0c;且漏检率常高达15%-30%。当我们尝试用深度学习构建缺陷检测系统时&…...

抖音批量下载终极解决方案:douyin-downloader免费开源工具完整指南

抖音批量下载终极解决方案&#xff1a;douyin-downloader免费开源工具完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fa…...

告别SSH命令行:用VSCode的Log Viewer插件实时监控Linux syslog日志(附C程序测试)

告别终端监控&#xff1a;在VSCode中实现Linux系统日志可视化追踪 每次调试服务器应用时&#xff0c;你是否也厌倦了在SSH终端和代码编辑器之间反复切换&#xff1f;那些不断滚动的tail -f输出窗口不仅占用宝贵屏幕空间&#xff0c;还让问题排查变成了一场视觉追踪游戏。对于现…...

【OpenCV实战】从相机标定到PnP测距:手把手实现单目视觉定位(C++代码详解)

1. 相机标定基础与实战准备 单目视觉定位就像给机器人装上了一只"智慧之眼"&#xff0c;而相机标定就是教会这只眼睛如何正确理解世界。想象一下&#xff0c;如果你戴了一副度数不合适的眼镜&#xff0c;看到的物体位置和形状都会失真——相机标定要解决的就是类似的…...

Flutter For Openharmony第三方库: animated_text_kit 的鸿蒙化适配指南

Flutter 三方库 animated_text_kit 的鸿蒙化适配指南 欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net 前言&#xff1a;文字是可动的 嘿~亲爱的开发者小伙伴们&#xff0c;大家好呀&#xff01;&#x1f44b; 今天我们要一起探索一个超级有…...

多品牌技高速存储卡术拆解分析实测:如何同时满足企业级监控与创作两不误?

一、开篇&#xff1a;当监控连续记录与影视创作相遇——存储卡的双重使命在企业级安防监控与专业影像创作的交汇点上&#xff0c;存储卡不再仅仅是数据的载体&#xff0c;而是工作流中不可绕过的风险控制节点。安防监控要求724小时不间断写入&#xff0c;对持续写入稳定性和数据…...

那些“假装很忙”的员工,正成为中小企业老板最大的管理黑洞

作为一名常年给企业做数字化诊断的顾问&#xff0c;我发现很多老板都有一个共同的“心病”&#xff1a;走进办公室&#xff0c;满屋子都是噼里啪啦的打字声&#xff0c;每个人看起来都在埋头苦干&#xff0c;但一到交付节点&#xff0c;进度总是莫名其妙地卡壳。这种“办公室伪…...

网安信息收集

声明&#xff1a;任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全 的活动&#xff1b;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具&#xff1b;明知他人从事危害网络安…...

避坑指南:海康威视工业相机SDK二次开发常见问题排查(从环境配置到图像采集)

海康威视工业相机SDK开发实战&#xff1a;从环境搭建到图像处理的深度避坑指南 工业视觉领域的开发者们&#xff0c;是否曾在深夜调试海康威视相机SDK时&#xff0c;被突如其来的"DLL缺失"错误打断思路&#xff1f;或是明明按照文档配置了项目属性&#xff0c;却始终…...

从电机控制到呼吸灯:用STM32CubeMX玩转TIM高级定时器的互补PWM与死区时间配置

从电机控制到呼吸灯&#xff1a;用STM32CubeMX玩转TIM高级定时器的互补PWM与死区时间配置 在嵌入式开发中&#xff0c;定时器是最基础也最强大的外设之一。对于STM32开发者来说&#xff0c;掌握高级定时器的互补PWM输出和死区时间配置&#xff0c;意味着可以解锁从电机控制到LE…...