当给定一个方阵时,在不使用每个数组中任何行/列的多个元素的情况下找到其中所有可能数组的最佳方法是什么?
例如,在这样的矩阵中:
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 实现的:http://www.merriampark.com/perm.htm
关于java - 查找矩阵中所有可能的唯一数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656707/