2013-11-26 69 views
-1

我有coordiantes如何翻譯一個6X7 int數組成一維數組

int[][] xyBoard = new int[6][7]; 

int[] flattenedBoard = new int[42]; 

其中,0,0是所述板的左下角的陣列。

我想顯示在一個網格中的數據但網格希望一切從左上方鋪陳到右下

網格需要長度42的一個維陣列,此陣列中的位置1需要對應到xyBoard數組中的x,y 0,5,扁平數組中的位置2然後在2d數組中爲1,5,等等......關於如何將xyBoard轉換爲扁平數組或公式的任何想法在給出1d陣列位置的情況下引用2d陣列的正確座標。

+0

使用nester'for loops'將數組中的數據複製到其他數組中。簡單 –

回答

1

的公式引用的座標

int idx(int x, int y) { 
    return y*widthOfBoard() + x; 
} 

int x(int idx) { 
    return idx % widthOfBoard(); 
} 

int y(int idx) { 
    return (idx - x(idx))/widthOfBoard(); 
} 

要獲得一個維數組索引做電 idx(x,y)

其中x,y是您的座標。

爲了讓X從索引座標做

x(idx) 

其中IDX是從一個維數組索引。

+0

這很接近,但我不認爲我很清楚。訂單需要更改。例如,在1d陣列中,前六個值應該對應於(0,6)(1,6)(2,6)(3,6)(4,6)(5,6)(6,6)二維數組 – Brian

0

下面是一個簡單的循環寫2Darray的所有元素的一維數組

int[][] xyBoard = new int[6][7]; 
int[] flattenedBoard = new int[42]; 

int sum = 0; 
for(int i = 0; i < 6 ; ++i){ 

    for (int j = 0; j < 7; ++j){ 
     flattenedBoard[sum] = xyBoard[i][j]; 
     sum++; 
} 
sum++; 
} 
相關問題