如何生成3 x 2矩阵的所有可能组合?

时间:2015-04-21 19:34:51

标签: java matrix

我试图创建一个只包含0和1的3 x 2矩阵并打印出所有可能的组合,但它每行只能包含一个1和一个0,这些数字与之无关除此之外,它们都是独一无二的,就像打乒乓球或其他东西的赌桌一样:

0 1       1 0       0 1       0 1      0 1
0 1       1 0       0 1       1 0      1 0
0 1       1 0       1 0       1 0      0 1

以下是代码:

public class Program {
    public static void main(String[] args) {
        int[][] array = {{0,1}};

        System.out.println("Array:");

        for(int row = 0; row < array.length; row++){
            for(int column = 0; column < array[row].length; column++){
                System.out.print(array[row][column] + "  ");
            }
            System.out.println();
        }
    }
} 

这就是我所知道的。我不知道从哪里拿它。

1 个答案:

答案 0 :(得分:1)

对于N-by-2矩阵的一般情况,将有2 ^ N个组合符合您的标准。请考虑每行只能处于两种状态:[0, 1][1, 0]

从矩阵开始,每行都处于初始状态[0, 1]。然后,对于每个数字X,其中0 <= X <1。 2 ^ N,将X转换为二进制。当M位为1时,反转第M行的值。

例如,二进制000对应于:

0 1
0 1
0 1

二进制101对应于:

1 0 (swapped)
0 1
1 0 (swapped)