2015-10-20 52 views
0

我有2D二进制数组。尺寸:M X N例如13 X 2阵列可以是这样的: 1010101010110 1010011111000 不同的子阵列的数量

是否可以说我们有多少不同的2D子阵列可以做什么呢? M x N数组也是子数组。

无字different我认为子数组的数量是:(n * (n + 1) * m * (m + 1))/4是这样吗?

+0

定义选择子阵列的操作类型和“不同”的含义 – Amit

+0

不同的尺寸。值不相关。 – John

回答

0

在测试

当然,对于不同尺寸的子矩阵的数量,它只是m x n因为行的每个长,有柱的长度,你可以切片。

但更有趣的问题,如何将二维数组的许多排列可以生成,下面的代码显示了这一点:

permutations = [] 
for i in 1...m { 
    for j in 1...n { 
     // now we make all possible i x j matrices 
     for k in 0..<floor(m/i) + 1 { 
      for l in 0..<floor(n/j) + 1 { 
       permutations.append(input[k:k+i,l:l+j]) 
      } 
     } 
    } 
} 

所以它是这样的:

m * n * (2m+1 + floor(m/2) + floor(m/3) + ... + floor(m/(m-1))) * (2n+1 + floor(n/2) + floor(n/3) + ... + floor(n/(n-1)))