首页 > 解决方案 > (Java) 查找数字数组的所有可能组合

问题描述

我正在用 Java 编写一个程序,它可以创建给定数量的数字的所有可能组合。例如,如果您有一个 {1,2,3,4} 数组,我需要编写一个程序,根据公式 2^(Array.length) 创建所有可能的组合,因为我有 4 个数字,我的总可能组合是 2^4 = 16。样本输出为

{} {1} {1,2} {1,2,3} {1,2,3,4} {2} {2,3} {2,3, 1} {2,3,4} {3} {3,1} {3,1,4} {3,4} {4} {4,1} {4,2}

该概念与 (F,F,F,F) (F,F,F,T) (F,F,T,T) 等真值表相同。

我用循环和递归尝试了很多东西,但似乎无法得到它,而且我觉得自己像个白痴,所以非常感谢任何帮助

到目前为止我所拥有的

public class PractiveProblem9 {

    public static void main(String[] args) {
        String s = "1234";
        permute(s.toCharArray(), 0);
    }

    public static void swap(char[] array, int i, int j) {
        char temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    public static void permute(char[] array, int n) {
        if (n == array.length - 1) {
            System.out.println(String.valueOf(array));
        }
        for (int i = n; i < array.length; i++) {
            swap(array, n, i);
            permute(array, n + 1);
            swap(array, n, i);
        }
    }
}

到目前为止的输出是

1342
1432
1423
2134
2143
2314
2341
2431
2413
3214
3241
3124
3142
3412
3421
4231
4213
4321
4312
4132
4123 

标签: javarecursion

解决方案


推荐阅读