2014-12-23 80 views
1

我有一個代碼創建了2分數組,它的工作原理應該如下,但是現在我想使第一行成爲反向的最後一行。如何根據右對角線交換對稱矩陣的元素

一樣,如果你有一列

1 
2 
3 
4 

必須進來新的數組像這樣:

4 3 2 1 

,我有矩陣是這樣的:

1 2 3 4 
5 6 7 8 
9 10 11 12 
13 14 15 16 

的新的矩陣必須是這樣的:

16 12 8 4 
15 11 7 3 
14 10 6 2 
13 9 5 1 

這是我的代碼:

package test5; 

public class test5 { 

    public static void main(String[] args) { 
     int[][] nums = new int[4][4]; 

     nums[0][0] = 1; 
     nums[0][1] = 2; 
     nums[0][2] = 3; 
     nums[0][3] = 4; 

     nums[1][0] = 5; 
     nums[1][1] = 6; 
     nums[1][2] = 7; 
     nums[1][3] = 8; 

     nums[2][0] = 9; 
     nums[2][1] = 10; 
     nums[2][2] = 11; 
     nums[2][3] = 12; 

     nums[3][0] = 13; 
     nums[3][1] = 14; 
     nums[3][2] = 15; 
     nums[3][3] = 16; 

     for (int i = 0; i < nums.length; i++) { 
      for (int j = 0; j < nums.length; j++) { 

       System.out.print(nums[i][j] + " "); 
      } 
      System.out.println(); 
     } 
    } 
} 

所以任何人都可以幫我嗎?

+0

你可能在考慮看看操作.... –

回答

0

如果您需要做的是你自己,嘗試這樣的:如果你做更多的矩陣http://math.nist.gov/javanumerics/jama/:

public class MatrixTranspose { 
     static int m1[][] = new int[][]{{1, 2, 3, 4, 5}, {5, 6, 7, 8, 9}, {9, 10, 11, 12, 13}, {13, 14, 15, 16, 17}}; 
     public static String toString(int[][] m) { 
      StringBuilder text = new StringBuilder(); 
      for (int row = 0; row < m.length; row++) { 
       int r[] = m[row]; 
       for (int col = 0; col < r.length; col++) { 
        if (col > 0) text.append(", "); 
        text.append(r[col]); 
       } 
       text.append("\n"); 
      } 
      return text.toString(); 
     } 

     public static int[][] transpose(int[][] m) { 
      int rows = m.length; 
      int cols = m[0].length; 

      int t[][] = new int[cols][]; // first create the empty transpose matrix 
      for (int trow = 0; trow < cols; trow++) { 
       t[trow] = new int[rows]; 
      } 

      for (int row = 0; row < rows; row++) { 
       for (int col = 0; col < cols; col++) { 
        int tcol = rows-row-1; // transposed tcol is inverted row 
        int trow = cols-col-1; // transposed trow is inverted col 
        t[trow][tcol] = m[row][col]; 
       } 
      } 
      return t; 
     } 

     public static void main(String...params) { 
      System.out.println(toString(m1)); 
      System.out.println("--"); 
      System.out.println(toString(transpose(m1))); 
     } 
    } 
+0

感謝您的幫助,您可以更詳細地解釋轉置功能嗎? –

相關問題