我有二维二进制数组。大小:M
xN
例如13
x2
数组可以如下所示:
1010101010110
1010011111000
是否可以说我们可以制作多少个不同的二维子阵列?M
xN
数组也是子数组。
没有字different
我认为子数组的数量是:(n * (n + 1) * m * (m + 1)) / 4
这是真的吗?
我有二维二进制数组。大小:M
xN
例如13
x2
数组可以如下所示:
1010101010110
1010011111000
是否可以说我们可以制作多少个不同的二维子阵列?M
xN
数组也是子数组。
没有字different
我认为子数组的数量是:(n * (n + 1) * m * (m + 1)) / 4
这是真的吗?
测试中
当然,对于不同大小的子矩阵的数量,这只是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)))