java递归实现组合

该博客探讨了一种使用Java实现的递归组合生成算法,通过深度优先搜索(DFS)策略来生成并打印特定长度的组合。示例代码展示了如何从1到n的整数中选择指定数量的元素,并提供了对特定组合的选择功能。博客内容主要围绕算法思想和回溯法的应用展开。
摘要由CSDN通过智能技术生成
package com.nciae.yjz;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Combination {
    static int arr[];
    static List<String> list = new LinkedList<>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        arr = new int[num];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i + 1;
        }
        for (int i = 1; i <=arr.length; i++) {
            dfs(0, 0,i);//c15 c25 c35 c45 c55 都选一次
        }

        //比方说仅想要 c35  就可以输入5然后 ,用dfs(0,0,3);
    }

    //cur:要了多少个值, i:第i个值要不要,exit:代表着多少个值 开始退出
    private static void dfs(int cur, int i,int exit) {
        if (cur == exit) {
            System.out.println(list);
            return;
        }
        if (i == arr.length)
            return;
        //要这个
        list.add("" + arr[i]);
        dfs(cur + 1, i + 1,exit);
        //回溯,不要这个
        list.remove("" + arr[i]);
        dfs(cur, i + 1,exit);
    }
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值