2015-10-20 58 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)))