寻找2d数组的独特排列

时间:2017-11-24 09:11:32

标签: arrays algorithm sorting permutation

这是继续 Performance tips for finding unique permutation这个问题,

需要的算法,任何语言或伪语言

TLDR:有一个数组数组,你需要以符合以下要求的方式对每个内部数组进行排序:

  
      
  1. 输入数组包含一组数组。
  2.   
  3. 每个内部数组都包含唯一元素。
  4.   
  5. 每个内部数组可能有不同的长度和不同的值。
  6.   
  7. 输出数组必须包含完全相同的值。
  8.   
  9. 输出内部数组必须在同一个键上具有唯一值。
  10.   
  11. 如果没有解决方案,则允许通配符即:null。
  12.   
  13. 可以在同一个密钥上复制通配符。
  14.   
  15. 解决方案应该包含尽可能少的通配符。
  16.   
  17. 算法应该能够在不到180 s的时间内处理高达30x30的阵列。所以避免暴力破解。
  18.   
到目前为止,我最好的解决方案是获取所有元素,定义数组的最大大小,(因此在输入数组中输出2x3必须是3x3)然后循环遍历所有元素并用第一个填充数组并休眠直到所有元素都被使用。我发现这里的关键是你填充的元素的顺序。

实施例

[X, Y] solved by [X,Y]
[X, Y] .         [Y,X]

[X, Y, Z] solved by [X,Y,Z]
[X, Y, Z] .         [Z,X,Y]
[X, Y, Z] .         [Y,Z,X]

[X, Y, Z] solved by [X,Y,Z]
[X, A, Z] .         [Z,X,A]
[X, Y, A] .         [Y,A,X]

[X, Y] solved by [X,Y,_]
[X, Y] .         [_,X,Y]
[X, Y] .         [Y,_,X]

这可能看起来很简单,但这不是

0 个答案:

没有答案