• 蓝桥杯(3.1)


    92. 递归实现指数型枚举

    import java.util.Scanner;
    
    public class Main {
    	static int N = 16;
    	static int n;
    	static int[] st = new int[N];	
    
    	public static void dfs(int u) {
    		if(u > n) {
    			for(int i=1;i<=n;i++) {
    				if(st[i] == 1)
    					System.out.print(i+" ");
    			}
    			System.out.println();
    			return ;
    		}
    		
    		st[u] = 2;
    		dfs(u+1);
    		st[u] = 0;		
    		
    		st[u] = 1;
    		dfs(u+1);
    		st[u] = 0;		
    	}
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		n = sc.nextInt();
    		dfs(1);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    94. 递归实现排列型枚举

    import java.util.Scanner;
    
    public class Main {
    	static int N = 10;
    	static int n;
    	static int[] st = new int[N];	
    	static boolean[] vis = new boolean[N];	
    
    	public static void dfs(int u) {
    		if(u > n) {
    			for(int i=1;i<=n;i++) {
    					System.out.print(st[i]+" ");
    			}
    			System.out.println();
    			return ;
    		}
    		for(int i=1;i<=n;i++) {
    			if(!vis[i]) {
    				st[u] = i;
    				vis[i] = true;
    				dfs(u+1);
    				st[u] = 0;
    				vis[i] = false;
    			}
    		}
    		
    	}
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		n = sc.nextInt();
    		dfs(1);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    93. 递归实现组合型枚举

    import java.util.Scanner;
    
    public class Main {
    	static int N = 26;
    	static int n;
    	static int m;
    	static int[] st = new int[N];	
    
    	public static void dfs(int u,int start) {
    		if(u > m) {
    				for(int i=1;i<=m;i++) {
    					System.out.print(st[i]+" ");
    				}
    				System.out.println();
    				return ;
    		}
    		for(int i=start;i<=n;i++) {
    				st[u] = i;
    				dfs(u+1,i+1);
    				st[u] = 0;
    			}		
    	}
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		n = sc.nextInt();
    		m = sc.nextInt();
    		//u和start
    		dfs(1,1);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    项目开发流程
    30天刷题计划(五)
    JVM类的声明周期
    4. hdfs高可用集群搭建
    编译+链接和预处理
    什么是原生IP与广播IP?原生IP有何优势?
    Azkaban登录分析
    支持Unicode的Java正则表达式?
    JAVA的异常
    C++ 函数模板
  • 原文地址:https://blog.csdn.net/qq_62552630/article/details/136404519