【代码随想录】【回溯算法】补day24:组合问题以及组合的优化

回溯算法:递归函数里面嵌套着for循环

在这里插入图片描述

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。
示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]

包含组合问题和组合问题的剪枝优化

class solution:def combine(self,n,k,startindex):self.path=[]self.result=[]self.backtracking(n,k,startindex)return self.resultdef backtracking(self,n:int,k:int,startindex:int):# 递归的终止条件if len(self.path)==k:self.result.append(self.path[:]) # 结果拷贝return self.result# for i in range(startindex,n+1):# 横向处理,在没有剪枝的情况下需要遍历 数组的长度 次#     # 单层递归的逻辑:二叉树深度搜索#     self.path.append(i)#     self.backtracking(n,k,i+1)#     self.path.pop()# 剪枝优化for i in range(startindex, n-(k-len(self.path)) + 2):# 剪枝处理,i再大,就不满足k个了,就搜不到对应的组合了# 单层递归的逻辑:二叉树深度搜索self.path.append(i)self.backtracking(n, k, i + 1)self.path.pop() #回溯处理if __name__ == '__main__':n=9k=3s=solution()print(s.combine(n,k,1))

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离线LaTex公式识别工具V0.9开发

离线LaTex公式识别工具V0.9开发 文章目录 离线LaTex公式识别工具V0.9开发工程来源GUI界面streamlit 模型文件离线调用Pix2TexttexifyNougat-LaTex 打包成exepyinstaller打包方法pyinstaller打包遇到的问题File "subprocess.py", line 1420, in _execute_child FileNo…

数据结构的概念大合集03(栈)

概念大合集03 1、栈1.1 栈的定义和特点1.2 栈的基础操作1.3 栈的顺序存储1.3.1 顺序栈1.3.2 栈空,栈满,进栈,出栈的基本思想1.3.3 共享栈1.3.3.1 共享栈的4要素 1.4 栈的链式存储1.4.1 链栈的实现1.4.2 链栈的4个要素 1、栈 1.1 栈的定义和特…

软考高级:软件工程螺旋模型概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

科研绘图一:箱线图(添加贝赛尔曲线)

R语言绘图系列—箱线图贝赛尔曲线 (一): 科研绘图一:箱线图(添加贝赛尔曲线) 文章目录 R语言绘图系列---箱线图贝赛尔曲线(一): 科研绘图一:箱线图(添加贝赛尔曲线&…

【人工智能】英文学习材料(每日一句)

#学习笔记# 目录 1.Natural Language Processing,NLP(自然语言处理) 2.Machine Learing,ML(机器学习) 3.Neural Networks(神经网络) 4.Deep Learing(深度学习&#…

GiT: Towards Generalist Vision Transformer through Universal Language Interface

GiT: Towards Generalist Vision Transformer through Universal Language Interface 相关链接:arxiv github 关键字:Generalist Vision Transformer (GiT)、Universal Language Interface、Multi-task Learning、Zero-shot Transfer、Transformer 摘要 …

浏览器如何进行静态资源缓存?—— 强缓存 协商缓存

在平时使用浏览器排查问题的过程中,我们有时会看到浏览器网络请求中出现304状态码,那么是什么情况下出现304呢?下面是关于这一现象的解释: 浏览器如何进行静态资源缓存?—— 强缓存 & 协商缓存 状态码 304浏览器如…

GET和POST方法的区别

GET和POST的区别 在我们开发项目的时候常常会在Controller层使用到POST方法或者GET方法,犹豫到底将接口定义为GET方法还是POST方法?那这两者之间有什么区别呢? 看一下官方定义: GET 和 POST 是 HTTP 协议中最常用的两种请求方法…

(56)删除每行中的最大值

文章目录 1. 每日一言2. 题目3. 解题思路4. 代码5. 结语 1. 每日一言 抱怨过去发生的一切,就等于丧失了力量,白白浪费了往事要带给我们的成长。 2. 题目 题目链接:删除每行中的最大值 给你一个 m x n 大小的矩阵 grid ,由若干正…

STM32中MicroLIB的关闭为什么会导致卡死----解析

STM32MicroLIB 大家好我是 MHZ 。最近又开始往回捡单片机的知识了~ 之前大学的时候都没用过 STM 的 CubeMX,这会拿来用着感觉很方便啊~ 果然科技在进步! 在开发使用 Keil 对 STM32 进行开发的时候在会有一个叫做 MicroLIB 的选项。 这个的具体原因我搜…

数据结构/C++:红黑树

数据结构/C:红黑树 概念实现基本结构插入uncle为红色节点uncle为黑色节点 总代码展示 概念 红黑树是一种二叉搜索树,一般的二叉搜索会发送不平衡现象,导致搜索效率下降,于是学者们开始探索如何让二叉搜索树保持平衡,这…

java算法第25天 | ● 216.组合总和III ● 17.电话号码的字母组合

这两道题都是基于回溯的基本问题。 216.组合总和III 这道题是77.组合问题的变体&#xff0c;只不过终止条件多了一个和等于n。 class Solution {List<List<Integer>> resnew ArrayList<>();List<Integer> pathnew ArrayList<>();public List&l…