首页 > 其他分享 >递归实现三类枚举

递归实现三类枚举

时间:2023-04-28 09:34:52浏览次数:36  
标签:三类 递归 int state dfs 枚举 print


1.递归实现组合类枚举
组合类枚举:从n中选s个数的所有组合

n = 0
m = 0

def dfs(u : int, s : int, state : int):
    if s == m:
        for i in range(0 , n):
            if state >> i & 1:
                print(i + 1, end=' ')
        
        print("")
        return 
    
    if u == n :
        return 
    for i in range (u , n):
        dfs(i + 1, s + 1, state + (1 << i))

n,m = map(int ,input().split())

dfs(0 ,0 ,0)

2.递归实现排列型枚举
排列型枚举就是获取n个数的全排列

n = 0
path = []

def dfs(u : int, state : int) :
    if u == n:
        for x in path :
            print(x,end=' ')
        print()
        return
    
    for i in range(0 , n):
        if not (state >> i & 1):
            path.append(i + 1)
            dfs(u + 1, state + (1 << i))
            del(path[-1])

n = int(input())
dfs(0 , 0)

3.递归实现指数类枚举
指数类枚举: 1∼n 这 n 个整数中随机选取任意多个

n = 0

def dfs(u : int, state : int):
    
    if u == n :
        for i in range (0 , n):
            if state >> i & 1 :
                print(i + 1,end=' ')
                
        print("")
        return 
    
    dfs(u + 1, state)
    dfs(u + 1, state + (1 << u))
    
n = int(input())

dfs(0,0)

标签:三类,递归,int,state,dfs,枚举,print
From: https://www.cnblogs.com/lyz103/p/17360952.html

相关文章

  • 递归比较两个字典差异-python dict different
    deffindDiff(d1,d2,path=""):forkind1:if(knotind2):print(path,":")print(k+"askeynotind2","\n")else:iftype(d1[k])isdict:......
  • 汉诺塔问题(递归)
    #include<iostream>usingnamespacestd;voidmove(intn,chara,charb,charc){ if(n==0) return; move(n-1,a,c,b); cout<<a<<"-->"<<c<<endl; move(n-1,b,a,c);}intmain(){ intn; chara='......
  • HJ42 学英语 递归解法
    1#12719192d={1:'one',2:'two',3:'three',4:'four',5:'five',36:'six',7:'seven',8:'eight',9:'nine',10:'ten',411:'eleven',12:'tw......
  • 第10章 枚举类和注解
    1.枚举类的使用枚举类的实现:在JDK1.5之前需要自定义枚举类在JDK1.5之后新增了enum关键字用于定义枚举类枚举类的属性:枚举类对象的属性不应允许被改动,所以应该使用privatefinal进行修饰。(若枚举只有一个对象,则可以作为一种单例模式的实现方式,即privatefinal类名instance=......
  • 关于oracel 递归语法start with connect by 和 left join 一起使用的一个bug
    左表为树状结构机构表A,右表为人员表(有机构ID字段)BSELECTA.*,B.*FROMALEFTJOINBONA.ORG_ID=B.ORG_IDSTARTWITHA.ORG_ID='011000000004'CONNECTBYPRIORA.ORG_ID=A.P_ORG_ID查询结果出现,B表中的1条记录,最后重复出现。(最终的结果可能为:对A和B......
  • 对递归的理解
      二叉树中的遍历以及线索二叉树的创建对递归的使用非常频繁,递归对我来说也一直是模糊不清的概念。  故写下此篇文章帮助理解递归。一.递归的定义  "一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新......
  • go 枚举
    前言枚举类型是一种常用的数据类型,用于表示一组有限的、预定义的、具名的常量值。在枚举类型中,每个常量都是一个枚举值,它们之间的值相等且唯一。枚举类型通常用于表示一组相关的常量,比如星期、月份、性别等等。在其他语言里(比如 Java 和 C),都内置了枚举类型,而在 Go 语言里是......
  • Java-Day-14( 枚举 + 注解 + 自设头文件 )
    Java-Day-14枚举(enumeration,enum)若是创建春夏秋冬四季的信息,如果按传统方法创建,无法固定信息,可以随时调改,所以要用枚举,做到只读且不能改枚举一组常量的集合——属于一种特殊的类,里面只包含一组有限的特定的对象实现方式自定义类实现枚举构造器私有化......
  • 二叉树的遍历(递归算法)
    //二叉树的遍历(递归算法)#include<stdio.h>#include<malloc.h>typedefstructBiTNode{intdata;structBiTNode*lchild,*rchild;//存储二叉树的左孩子和右孩子}BiTNode,*BiTree;voidInitTree(BiTree&root){root=(BiTNode*)malloc(sizeof(BiTNo......
  • java -- 枚举和反射
    枚举枚举概述枚举是JDK1.5新增的引用数据类型,和类,接口是一个级别的,定义枚举的关键字为enum。java.lang.Enum类,是所有枚举的父类。枚举的本质就是一个类的多个对象。枚举的定义格式:publicenmu枚举名{}枚举常量定义:枚举中的常量名字大写,多个常量之间逗号分开,最后一个常......