一个数组是12 22 22 2 4 6怎么输出他的所有排列

解决方案 »

  1.   

    6个数组 全存这6个数,位置不变
    for 循环 把6个数组叠起来 输出
    结果 就是了
      

  2.   


    public class PermutCombi {
    public static void output(int[] num, int[] arr) {
    int i;
    for (i = arr.length - 1; i >= 0; --i)
    System.out.print((arr[num[i]]) + "  ");
    System.out.println();
    } public static void permutCombi(int[] arr, int n) {
    int[] num, ;
    int i, flag;
    num = new int[n + 1];
     = new int[n];
    for (i = 0; i <= n; ++i)
    num[i] = 0;
    do {
    for (i = 0; i < n; ++i)
    [i] = 0;
    flag = 0;
    ++num[0];
    for (i = 0; i < n; ++i) {
    if (num[i] == n) {
    num[i] = 0;
    ++num[i + 1];
    }
    ++[num[i]];
    // 各位数组单元有无重复
    if ([num[i]] > 1) {
    flag = 1;
    break;
    }
    }
    if (flag == 0)
    output(num, arr);
    } while (num[n] == 0);
    } public static void main(String[] args) {
    int[] n = {12, 22, 2, 4, 6};
    permutCombi(n, n.length);
    }
    }
      

  3.   

    输出它所有排列不就是编译打印出来吗?你看看是不是这样:public class Test {
    public static void main(String[] args) {
    int[] arr=new int[]{12,22,22,2,4,6};
    for(int i=0;i<arr.length;i++){
    System.out.print(arr[i]+" ");
    } }}
      

  4.   

    dfs加去重去重的时候可以用Map