2011-11-16 49 views
0

我在矩陣中的替換元素有問題。我在.txt文件中有一個矩陣3x3。我需要像這樣替換矩陣元素:最後一個元素應該是第一個,倒數第二個元素應該是第二個,等等。有任何想法嗎?在java中替換更高維的矩陣元素

+0

1.將文件內容讀入數組; 2.將數組寫回文件,但以相反的順序。 –

回答

5

切記:您可以始終將更高維度的數據投影到較低維度的數據上!一旦你意識到這一點,你可以很容易地使用該算法來逆轉一維數組來倒轉二維數組。

的步驟:

1)2D陣列轉換爲一維數組。 2)反轉一維數組 3)將一維數組反轉的內容寫入一個新的二維數組。

雖然這對於一個簡單的3x3的情況來說是過量的,但它很容易擴展以支持更復雜的 數組類型。

實現:

這是比較簡單的。任何2D矩陣都可以表示爲1D矩陣,只需簡單地將索引和映射數組下標即可。例如:

[1 2 ; 3 4] 

可表現爲

int rowLength=2; 
int[]data = [1, 2, 3, 4]; 

所以,你必須編寫從二維數組的一維數組的映射,你必須寫一個方法是這樣的:

int[] mapTo1DMatrix(int[][] array) 
{ 
    final int elementsPerRow = array[0].length; // find out the elements in a row, where all rows are same length. 

    for(int arrayRow =0; arrayRow < array.length; arrayRow++) 
     for(int col =0; col < elementsPerRow; col ++) 
      myOneD[i+arrayRow] = array[arrayRow,col];  

} 
+0

矯枉過正:)但清晰明瞭的解釋,+1。 –

+0

謝謝:)這非常有幫助。 – edi233