2011-10-05 69 views
1

当给定一个正方形矩阵时,如果不使用每个数组中任何行/列中的多个元素,找到其中所有可能的数组的最佳方法是什么?在矩阵中查找所有可能的唯一数组

例如,在像这样一个矩阵:

0 2 3 
1 2 3 
1 2 0 

然后,它将通过它去像这样: enter image description here

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

123 
123 
023 
123 
120 
020 

回答

1

您可以将每个这样的数组直接映射到数字的排列(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实现的:http://www.merriampark.com/perm.htm