hdu1716 dfs全排列

import java.util.Arrays;
import java.util.Scanner;

//输出n个数的全排列
public class hdu1716 {
    static int[] num = new int[10];
    static int[] vis = new int[10];
    static int n;
    static int flag = -1;
    static int ci = 0;
    static int ci1 = 0;
    static int[] vis1 = new int[10000];
    public static void dfs1(int step,int[] nn){
        if (step== n +1){
            int res = 0;
            for (int i = 1; i <= n; i++) {
                int a = 1;
                for (int j = 4; j >i ; j--) {
                    a = a*10;
                }
                res += num[i]*a;
            }
            if (num[1] != 0 && vis1[res]==0){
                vis1[res] = 1;
                if (num[1] != flag){
                    flag = num[1];
                    if (ci!=0){
                        System.out.println();
                        ci1 = 0;
                    }
                    ci = 1;
                    if (ci1 == 0){
                        System.out.print(res);
                        ci1=1;
                    }else{
                        System.out.print(" ");
                        System.out.print(res);
                    }

                }else{
                    if (ci1 == 0){
                        System.out.print(res);
                        ci1=1;
                    }else{
                        System.out.print(" ");
                        System.out.print(res);
                    }
                }
            }
            return;
        }
        for (int i = 1; i <= n; i++) {
            if (vis[i]==0){
                num[step] = nn[i-1];
                vis[i] = 1;
                dfs1(step+1,nn);
                vis[i] = 0;
            }
        }
    }
    public static void main(String[] args) {
        n = 4;
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int a = sc.nextInt();
            int b = sc.nextInt();
            int c = sc.nextInt();
            int d = sc.nextInt();
            if (a==0&&b==0&&c==0&&d==0){
                break;
            }
            int[] nn = {a,b,c,d};
            Arrays.sort(nn);
            dfs1(1,nn);
        }
    }
}

 

posted @ 2025-05-05 21:23  XiaohuangTX  阅读(5)  评论(0)    收藏  举报