首页 > 编程语言 >24天【代码随想录算法训练营34期】第七章 回溯算法part01 ( ● 理论基础 ● 77. 组合 )

24天【代码随想录算法训练营34期】第七章 回溯算法part01 ( ● 理论基础 ● 77. 组合 )

时间:2024-04-13 18:34:05浏览次数:25  
标签:24 int self 随想录 append 算法 result path backtracking

**理论基础 **

void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}

77. 组合
为啥一定要result.append(path[:]),因为在python里面,如果result.append(path),就是加了path的指针,path后面发生什么变化,result也会随之发生变化
但是如果path[:],那就是直接复制粘贴

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        result = []
        self.backtracking(n, k, 1, [], result)
        return result

    def backtracking(self, n, k, startingIndex, path, result):
        if len(path) == k:
            result.append(path[:])
            return
        for i in range(startingIndex, n+1):
            path.append(i)
            self.backtracking(n, k, i+1, path, result)
            path.pop()

标签:24,int,self,随想录,append,算法,result,path,backtracking
From: https://www.cnblogs.com/miramira/p/18133188

相关文章

  • 排序算法-快速排序
    排序算法-快速排序一、快速排序介绍1.1原理介绍快速排序(QuickSort)是一种常用的排序算法,也是一种基于分治思想的排序算法。快速排序的基本思想是选取一个基准元素,将数组分成两部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素,然后对左右两部分分别......
  • 算法
    算法1、定义算法是解决特定问题或执行特定任务的一系列明确定义的步骤或指令。它是一个用于解决问题的有序集合,通过一系列的操作来转换输入数据为所需的输出结果。2、特点算法通常具有以下特征:有限性(Finiteness):算法必须在有限的步骤内结束,不会无限循环或持续执行下去。确定......
  • 排序算法
    排序算法1.排序算法定义:排序算法是一种将数据元素按特定顺序(通常是升序或降序)排列的算法。排序是计算机科学中最基本的操作之一,用于数据组织和优化搜索算法等。2、排序算法分类快速排序归并排序堆排序冒泡排序快速排序:快速排序是一种高效的分治排序算法,通过选定一个'......
  • P2437 蜜蜂路线
    P2437蜜蜂路线题目描述一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房\(m\)开始爬到蜂房\(n\),\(m<n\),有多少种爬行路线?(备注:题面有误,右上角应为\(n-1\))输入格式输入\(m,n\)的值输出格式爬行有多少种路线样例......
  • IP地址后面的/24是什么意思?
    IP地址后面的/24是什么意思? ip地址后面的斜杠24表示掩码位是24位的,即用32位二进制表示的子网掩码中有连续的24个“1”:11111111111111111111111100000000,将其转化为十进制,就是:255.255.255.0了。 IP地址是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为......
  • Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图
    AdobeIllustrator2024v28.4.1(macOS,Windows)-矢量绘图Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD请访......
  • Adobe Acrobat Pro DC 2024 (macOS, Windows) - 创建、转换和编辑 PDF
    AdobeAcrobatProDC2024(macOS,Windows)-创建、转换和编辑PDFAdobeAcrobatPDFsoftware请访问原文链接:https://sysin.org/blog/adobe-acrobat/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAcrobat:创建、转换和编辑PDF借助Acrobat实现各种文件创建P......
  • Adobe Animate 2024 v24.0.2 (macOS, Windows) - 动画制作
    AdobeAnimate2024v24.0.2(macOS,Windows)-动画制作Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD请访问原......
  • Adobe Bridge 2024 v14.0.3 (macOS, Windows) - 集中管理创意资源
    AdobeBridge2024v14.0.3(macOS,Windows)-集中管理创意资源Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD......
  • 最小生成树 Kruskal 算法
    Kruskal算法edge存储边起点、终点、边权fa[x]存储x的父节点1、先初始化父节点2、按边的权排序(贪心思想)3、如果不在同一集合内,把这条边加入最小生成树,并且合并两个集合,反之就跳过4、最后根据连接的点是否是顶点的个数减一确定能否生成最小生成树如下图,红色表示取的边和次......