2012-08-22 156 views
0

如果我有2d數組,則表示1維中每個元素的方法是使用row_num * row_width + column,如果我想要row_num列處的元素。但是如果我有一個3x3二維數組(如一個例子),那麼1維數組應該有多大。對於1d陣列,不應該3^3 = 9是否足夠?但是對於元素3,2,索引應該是3 * 3 + 2 = 11。或者應該是我想要解決的最大索引的大小 - 例如, 3 * 3 + 3 = 12如果我想處理來自3x3二維數組的所有元素?將2d數組映射到1d數組時的數組大小

回答

4

您需要從零(零索引)開始計數,其中行和列爲0,1,2。然後元素「(3,2)」確實是「(2,1)」或者2 * 3 + 1 = 7,最終元素「(3,3)」確實是「(2,2) )「,這是2​​ * 3 + 2 = 8。這是一維數組中的最後一個元素,因爲它們也從0開始計數,所以9個元素是0,1,2,3,4,5,6,7,8。

例如:

>>> for r in 0,1,2: 
...  for c in 0,1,2: 
...   print r, c, r*3+c 
... 
0 0 0 
0 1 1 
0 2 2 
1 0 3 
1 1 4 
1 2 5 
2 0 6 
2 1 7 
2 2 8 
+0

你在正確的情況下,你可以從0開始,但我的情況下,我需要從couting的1所以我所做的就是利用數(R * N + C)% N – LordDoskias

+1

我不知道如何從1開始計算,但總是可以簡單地將它減去:如果r,c = 1,2,3,則可以使用'(r-1)* 3 + (c-1)'而不是獲得與上述相同的指數。 – DSM