Day24_77 组合

77 组合

  1. 组合无序,排列有序。
  2. 1~n个数中选k个数组合,k不确定,组合的方式。
    图片来自代码随想录
    (图片来自代码随想录)
  3. 确定回溯法的三部曲:
  • 递归函数的返回值和参数:集合n中取k个数,,每次从不同的位置开始,定义startIndex调整可以选择的范围[startIndex, n]。需要记录所有的组合和每次的组合数,定义两个全局变量记录每一个组合的vector<int> path和记录所有组合结果的vector<int> result。
  • 确定回溯函数的终止条件:path.size() == k; result.push_back(path)。
  • 确定回溯单层搜索逻辑:
for(int i = startIndex; i <= n; i++){//控制树的横向遍历
	path.push_back(i);//处理节点
	backtracking(n, k, i+1);//控制树的纵向遍历,从i+1开始
	path.pop_back();//回溯,撤销现在处理的节点,处理下一个节点
}
  1. 对于组合总数小于k(比如4)如何处理?处理过程跳过if判断,跳过for的循环,执行backtracking结束,隐含一个return的结束。
组合的修剪
  1. 如何修剪:for循环选择的起始位置之后的元素个数 已经不足 我们需要的元素个数了,那么就没有必要搜索了。
  2. n:总数,k:组合数,path.size():已经加入组合的元素个数,(k-path.size()):还需要组合的数,n-(k-path.size())+1:满足组合总数为k的最低开始位置。
  3. 确定修剪的代码:
for(int i = startIndex; i <= n-(k-path.size()); i++){
	path.push_back(i);
	backtracking(n, k, i+1);
	path.pop_back();
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《WebKit 技术内幕》学习之十一(4):多媒体

4 WebRTC 4.1 历史 相信读者都有过使用Tencent QQ或者FaceTime进行视频通话的经历&#xff0c;这样的应用场景相当典型和流行&#xff0c;但是基本上来说它们都是每个公司推出的私有产品&#xff0c;而且通信等协议也都是保密的&#xff0c;这使得一种产品的用户基本上不可能…

EXECL 单元格字符串链接 CONCAT :应用:将一行数据转为json

源&#xff1a; 目标 函数表示 CONCAT("data", CHAR(10), "{", CHAR(10), " ", "ulAlarmId : ", A5, CHAR(10), " ", "ulAlarmLevel : ", D5, CHAR(10)," ", "bBo…

Webpack5 基本使用 - 2

常用 loader loader 是辅助打包工具。webpack 默认只能打包 js 文件&#xff0c;打包其它模块就需要配置 loader 来告诉 webpack 该怎么去打包其它文件。loader 可以将文件从不同的语言转换为 JavaScript。一类文件如果需要多个 loader 处理&#xff0c;loader 的执行顺序是从…

从零开始学Python第02课:第一个Python程序

在上一课中&#xff0c;我们对 Python 语言的过去现在有了一些了解&#xff0c;我们准备好了运行 Python 程序所需要的解释器环境。相信大家已经迫不及待的想开始自己的 Python 编程之旅了&#xff0c;但是新问题来了&#xff0c;我们应该在什么地方书写 Python 程序&#xff0…

caj在线转换成word怎么转?几种在线转换方法详解

caj在线转换成word怎么转&#xff1f;在日常的学习和工作中&#xff0c;我们常常会遇到各种各样的文件格式。其中&#xff0c;CAJ格式的文件因其专业性强&#xff0c;常常让许多用户感到困扰。如果你手头恰好有这种格式的文件&#xff0c;却苦于无法编辑&#xff0c;那么接下来…

Centos7 两种方式安装 MySQL5.7 步骤 yum 、本地 tar 文件

一、使用 yum 源方式安装 1、卸载系统自带 mariadb MariaDB Server 是最流行的开源 关系型数据库 之一。它由 MySQL 的原始开发者制作&#xff0c;并保证保持开源。 在 CentOS 7 中默认安装有 MariaDB 可忽略&#xff0c;安装完成之后可以直接覆盖掉 MariaDB。 查看并卸载系统…

github无法访问此网站,github.com 的响应时间过长。

问题 点击之前书签页中保存的去github搜集的项目连接&#xff0c;出现github无法访问此网站&#xff0c;github.com 的响应时间过长。 解决办法 1、打开浏览器&#xff0c;点击百度&#xff1b; 2、搜索hub.nuaa.cf&#xff1b; 3、点击第一项&#xff0c;如下所示&#xf…

@RequestPart注解的REST API

RequestPart注解的REST API的做法 问题解决方案body设置header设置区别 问题 为了验证接口, 想使用apipost批量插入多条数据到服务器中, 但是一直没搜索到使用方法. 接口如下: ApiOperation("上传文件")PostMapping("/upload-file")public TeamResponseM…

【数据结构】 顺序栈的基本操作 (C语言版)

目录 一、顺序栈 1、顺序栈的定义&#xff1a; 2、顺序栈的优缺点 二、顺序栈的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、顺序栈的初始化 4、顺序栈的入栈 5、顺序栈的出栈 6、取栈顶元素 7、栈的遍历输出 8、顺序栈的判空 9、顺…

模版——函数模版(方法),类模版(容器)

函数模版 之前我们要实现两个变量值的交换要写交换函数&#xff0c; 但是因为交换函数需要把要交换的变量的参数写出来&#xff0c;所以在不同的两个类型的变量值交换的时候我们就要写重载函数&#xff0c;会显得很麻烦&#xff0c;那么我们是不是可以弄个一交换函数的模版&a…

Nacos持久化配置文件到Mysql(全图文).

1. 确保Mysql版本是在8以下&#xff0c;如果是8或者以上请这一步请参考&#xff1a; 最直接有效的解决nacos配置mysql8.0以上版本后无法启动的问题_nacos 8848端口 和mysql冲突-CSDN博客https://blog.csdn.net/qq_42758288/article/details/108967808 2.初始化数据库在Mysql&a…

Linux下安装 Redis7

Linux下安装 Redis7 三、Linux下安装 Redis7【redis-7.2.4.tar.gz】3.1.下载redis的安装包3.1.1.手动下载Redis压缩包并上传【redis-7.2.4.tar.gz】3.1.2.wget工具下载redis-7.2.4.tar.gz 3.2.将安装包进行解压缩3.3.进入redis的安装包3.4.检查是否有gcc 环境3.5.编译和安装并指…

自然语言处理--概率最大中文分词

自然语言处理附加作业--概率最大中文分词 一、理论描述 中文分词是指将中文句子或文本按照语义和语法规则进行切分成词语的过程。在中文语言中&#xff0c;词语之间没有明显的空格或标点符号来分隔&#xff0c;因此需要通过分词工具或算法来实现对中文文本的分词处理。分词的…

大型语言模型基础知识的可视化指南

直观分解复杂人工智能概念的工具和文章汇总 如今&#xff0c;LLM&#xff08;大型语言模型的缩写&#xff09;在全世界都很流行。没有一天不在宣布新的语言模型&#xff0c;这加剧了人们对错过人工智能领域的恐惧。然而&#xff0c;许多人仍在为 LLM 的基本概念而苦苦挣扎&…

操作系统导论-课后作业-ch14

1. 代码如下&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {int *i NULL;free(i);return 0; }执行结果如下&#xff1a; 可见&#xff0c;没有任何报错&#xff0c;执行完成。 2. 执行结果如下&#xff1a; 3. valgrind安装使用参考&a…

数据结构(Chapter Two -03)—线性表的链式表示

在这一部分&#xff08;数据结构(Chapter Two -01)—线性表及顺序表-CSDN博客&#xff09;里面&#xff0c;我们知道线性表包括顺序表和链表结构。前面写了顺序表的基本操作&#xff0c;那这部分就写一写线性表叭&#xff01; 链表特点&#xff1a;不需要使用地址连续的存储单…

【Flink-1.17-教程】-【四】Flink DataStream API(7)输出算子(Sink)

【Flink-1.17-教程】-【四】Flink DataStream API&#xff08;7&#xff09;输出算子&#xff08;Sink&#xff09; 1&#xff09;连接到外部系统2&#xff09;输出到文件3&#xff09;输出到 Kafka4&#xff09;输出到 MySQL&#xff08;JDBC&#xff09;5&#xff09;自定义 …

2024年第十二届亚洲机械与材料工程国际会议(ACMME 2024)即将召开!

时间&#xff1a;2024年6月14-17日 地点&#xff1a;日本京都先端科学大学太秦校区 会议官网&#xff1a;第11届ACMME |日本京都 2024年第十二届亚洲机械与材料工程会议 &#xff08;ACMME 2024&#xff09;将于2024年6月14日-17日在日本京都先端科学大学召开。亚洲机械与材料…

STL第二讲

第二讲 视频标准库源码版本&#xff1a;gnu c 2.9.1/4.9/Visual C OOP vs GP GP是将datas与methods分开&#xff0c;OOP相反&#xff1b; 为什么list不能使用全局的sort&#xff1f; 因为sort源代码&#xff1a; *(first (last - first)/2) // 此迭代器只能是随机访问迭代…

Jedis(一)与Redis的关系

一、Jedis介绍&#xff1a; 1、背景&#xff1a; Jedis是基于Java语言的Redis的客户端&#xff0c;Jedis Java Redis。Redis不仅可以使用命令来操作&#xff0c;现在基本上主流的语言都有API支持&#xff0c;比如Java、C#、C、PHP、Node.js、Go等。在官方网站里有一些Java的…