全排列与组合 java代码

本文深入探讨了全排列和组合算法的实现细节,通过具体的Java代码示例,讲解了如何使用深度优先搜索(DFS)策略来生成指定范围内数字的所有可能排列和组合,为读者提供了清晰的理解路径和实践指南。
全排列

public class 全排列 {
    private static int n=3;//表示从1-3的全排列
    public  static int []a=new int[4];
    public  static int[] used = new int[4];//标记数组
    public static void main(String[] args) {
        Arrays.fill(used,0);
        dfs(1);
    }
    public static void dfs(int step){
        if(step==n+1){
            System.out.println(Arrays.toString(a));
            return;
        }
        for(int i=1;i<=n;i++){
            if (used[i]==0){
                a[step]=i;
                used[i]=1;
                dfs(step+1);
                used[i]=0;
            }
        }
    }
}
组合

public class 组合 {
    public static int n=5;//表示1-5有五个数字
    public static int num=3;//表示从5个数字中选3个进行组合
    public  static int []a=new int[4];
    public static void main(String[] args) {
        dfs(1,1);
    }
    public static void dfs(int step,int k){
        if(step==num+1){
            System.out.println(Arrays.toString(a));
            return;
        }
        for(int i=k;i<=n;i++){
            a[step]=i;
            dfs(step+1,i+1);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值