前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >递归实现指数型枚举

递归实现指数型枚举

作者头像
GeekLiHua
发布2025-01-21 15:30:18
发布2025-01-21 15:30:18
2700
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

递归实现指数型枚举

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

输入格式 输入一个整数 n。

输出格式 每行输出一种方案。

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

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

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

数据范围 1≤n≤15 输入样例: 3 输出样例:

3 2 2 3 1 1 3 1 2 1 2 3

提交代码

代码语言:javascript
代码运行次数:0
运行
复制
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);
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 递归实现指数型枚举
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档