2014-12-23 70 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

感谢您的帮助,您可以更详细地解释转置功能吗? –

相关问题