递归实现指数型枚举

简介: 递归实现指数型枚举

递归实现指数型枚举

从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。

输入格式

输入一个整数 n。

输出格式

每行输出一种方案。

同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。

对于没有选任何数的方案,输出空行。

本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。

数据范围

1≤n≤15

输入样例:

3

输出样例:

3

2

2 3

1

1 3

1 2

1 2 3

提交代码

import java.util.*;
public class Main
{
    static ArrayList<Integer> list = new ArrayList<>();
    static boolean [] st = new boolean[20];
    static int n;
    static void dfs (int u, int m, int start)
    {
        if (u == m)
        {
            Iterator it = list.iterator();
            while(it.hasNext())
            {
                System.out.print(it.next() + " ");
            }
            System.out.println();
            return;
        }
        for (int i = start; i <= n; ++ i)
        {
            if (!st[i])
            {
                st[i] = true;
                list.add(i);
                dfs (u + 1, m, i + 1);
                st[i] = false;
                list.remove(list.size() - 1);
            }
        }
    }
    public static void main(String [] args)
    {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        System.out.println();
        for (int i = 1; i <= n; ++ i)
        {
            dfs (0, i, 1);
        }
    }
}
相关文章
92. 递归实现指数型枚举
92. 递归实现指数型枚举
|
7月前
|
存储 算法 测试技术
位运算、状态压缩、枚举子集汇总
位运算、状态压缩、枚举子集汇总
|
7月前
|
人工智能 测试技术
【位运算 状态压缩 枚举子集】1178. 猜字谜
【位运算 状态压缩 枚举子集】1178. 猜字谜
不用任何比较运算符找出两个整数中的较大的值
不用任何比较运算符找出两个整数中的较大的值
93 0
递归实现指数型枚举
递归实现指数型枚举
71 0
|
存储 C语言
C语言四舍五入计算方法(包含各种精度)
C语言四舍五入计算方法(包含各种精度)
1033 0
|
C++
C++ 计算斐波那契数列第100万项的精确整数值
C++ 计算斐波那契数列第100万项的精确整数值
121 0
枚举的三种类型--指数型&排列型&组合型
枚举的三种类型--指数型&排列型&组合型
113 0