全排列与组合 java代码

全排列


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);
        }
    }
}