Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在矩阵中查找所有可能的唯一数组_Java_Arrays_Algorithm_Matrix - Fatal编程技术网

Java 在矩阵中查找所有可能的唯一数组

Java 在矩阵中查找所有可能的唯一数组,java,arrays,algorithm,matrix,Java,Arrays,Algorithm,Matrix,当给定一个方阵时,在不使用每个数组中任何行/列中的多个元素的情况下,找到其中所有可能数组的最佳方法是什么 例如,在这样的矩阵中: 0 2 3 1 2 3 1 2 0 然后它会像这样经历: 然后它将输出以下数组列表: 123 123 023 123 120 020 您可以直接将每个这样的数组映射到数字排列(0..size-1)。为了向您展示其工作原理,排列(2,1,0)映射到3个坐标(2,0)、(1,1)、(0,2)。你给出的6个例子是 (2,1,0) (1,2,0) (0,2,1)

当给定一个方阵时,在不使用每个数组中任何行/列中的多个元素的情况下,找到其中所有可能数组的最佳方法是什么

例如,在这样的矩阵中:

0 2 3 
1 2 3 
1 2 0
然后它会像这样经历:

然后它将输出以下数组列表:

123
123
023
123
120
020

您可以直接将每个这样的数组映射到数字排列(0..size-1)。为了向您展示其工作原理,排列
(2,1,0)
映射到3个坐标
(2,0)、(1,1)、(0,2)
。你给出的6个例子是

(2,1,0)  (1,2,0)  (0,2,1)

(2,0,1)  (1,0,2)  (0,1,2)
为了解释映射,让我们使用第一个排列
(2,1,0)-->(2,0)、(1,1)、(0,2)
。然后,要使用的值是
array[2][0]、array[1][1]、array[0][2]


现在的问题是如何生成每个排列。有几种算法,其中一种是在java中实现的:

您可以直接将每个这样的数组映射到数字的排列(0..size-1)。为了向您展示其工作原理,排列
(2,1,0)
映射到3个坐标
(2,0)、(1,1)、(0,2)
。你给出的6个例子是

(2,1,0)  (1,2,0)  (0,2,1)

(2,0,1)  (1,0,2)  (0,1,2)
为了解释映射,让我们使用第一个排列
(2,1,0)-->(2,0)、(1,1)、(0,2)
。然后,要使用的值是
array[2][0]、array[1][1]、array[0][2]

现在的问题是如何生成每个排列。这里有几个算法,其中一个是用java实现的: