首页 > 其他分享 >LeetCode题库77.组合——dfs典型解法,递归+回溯+剪枝

LeetCode题库77.组合——dfs典型解法,递归+回溯+剪枝

时间:2023-08-27 11:33:59浏览次数:34  
标签:剪枝 nums int res solution dfs 77 ans

 

class Solution:
    def combine(self, n: int, k: int):
        nums=[x+1 for x in range(n)]
        res,ans=[],[]
        def dfs(nums:list[int]):   
            if len(ans)==k:
                ans_copy=ans.copy()#复制,避免ans数组改变使res跟着改变
                res.append(ans_copy)
                return
            for c,i in enumerate(nums[:n-(k-len(ans))+1]):
                ans.append(i)
                dfs(nums[c+1:])
                ans.pop()
        dfs(nums)
        return res


try:
    solution=Solution()
    res=solution.combine(4,2)
    print(res)
    solution=Solution()
    res=solution.combine(4,3)
    print(res)
except:
    print('error')

  

 

标签:剪枝,nums,int,res,solution,dfs,77,ans
From: https://www.cnblogs.com/tanyuanqing/p/17660027.html

相关文章

  • NC20277 [SCOI2010]字符串
    题目链接题目题目描述lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数。现在lxhgww想要知道满足要求的字符串共有多少个,聪明的程序员们,你们能帮助他吗?输入描述输入数据是一......
  • 【LeetCode回溯算法#12】二叉树的直径,树形dp的前置内容(使用dfs)
    二叉树的直径给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或......
  • 代码随想录算法训练营第二十四天| 理论基础 77. 组合
     理论基础    卡哥建议:其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。   题目链接/文章讲解:https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8......
  • 代码随想录第二天|977.有序数组的平方;209.长度最小的子数组;59.螺旋矩阵II,总结
    今天的这三道题每道题对我来说都不简单,有序数组的平方和长度最小的子数组这两道题还能用暴力求解,螺旋矩阵看着简单却没有思路,磨了半小时还是决定直接看讲解有序数组平方和用的双指针的思想,代码如下:1classSolution{2public:3vector<int>sortedSquares(vector<int......
  • 在有状态更新的dfs中一定要先更新状态,不然没有更新就查看下一个点了,会有多余运行
    例题P5318【深基18.例3】查找文献-洛谷|计算机科学教育新生态(luogu.com.cn)#include<bits/stdc++.h>#include<vector>#include<queue>#definerep(i,a,b)for(inti=a;i<=b;++i)#definedrep(i,a,b)for(inti=a;i<b;++i)usingnamespacestd;#define......
  • HDFS 读写
    参考链接:http://www.cnblogs.com/laov/p/3434917.html写流程:比如你有一个100M的文件。则写的流程大致如下。a,Client将File分块,分别为block1,和block2(64M,和36M)b,Client向NameNode发送写数据请求。c,NameNode获取Client的请求,记录Block的信息,并返回可用的DataNode,以及B......
  • Python基础入门学习笔记 077 GUI的终极选择:Tkinter14
    Tkinter提供了三种标准对话框模块,分别是:messagebox、filedialog、colorchoosermessagebox(消息对话框)实例1:askokcancel函数1fromtkinterimport*23print(messagebox.askokcancel("FishCDemo","发射核弹?"))45mainloop() 实例2:askquestion函数 实例3:asire......
  • idea安装bigdata tool 插件 HDFS客户端
    在idea里面下载bigdatatool插件使用hdfs客户端一、下载hadoop安装包,并将文件解压二、在idea的插件里面找到bbigdatatool插件并进行安装 如果在idea里面下载比较慢,可以在官网下载 BigDataTools-IntelliJIDEsPlugin|Marketplace(jetbrains.com) 在idea设置里面......
  • POJ1979(Red and Black, DFS)
    注意char处理,whenneedtomanipluateinputs,takecareofpreviouschars,suchas‘\n’#defineLOCAL#include<cstdio>#include<cstring>#include<algorithm>#defineSIZE30usingnamespacestd;charmap[SIZE][SIZE];intdir[][2]={0,......
  • POJ3050(DFS)
    一定要根据数据规模想问题,这题数据规模就不大,时间复杂度大概是O(R*C*dir^step)=O(5*5*4^6)。规模不大,可以无脑DFS,还是这句话,先将简单的写出来再说。//#defineLOCAL#include<cstdio>#include<cstring>#include<algorithm>#include<set>#defineSIZE5usingnamespac......