0

我有二维二进制数组。大小:MxN例如13x2数组可以如下所示: 1010101010110 1010011111000

是否可以说我们可以制作多少个不同的二维子阵列?MxN数组也是子数组。

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

4

1 回答 1

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)))

于 2015-10-21T04:48:34.427 回答