【演算法】斜線列印二維陣列
阿新 • • 發佈:2021-01-21
瑛太萊筆試
斜線列印二維陣列
-
題目描述
現有一個m*n的陣列,請按照斜對齊列印陣列。例如一個
a[3][4]
的陣列,
1 2 3 45 6 7 8
9 10 11 12
應按照1,2,5,3,6,9,4,7,10,8,11,12的順序列印陣列。
-
輸入描述
-
輸出描述
-
示例
-
程式碼
import java.util.Scanner; //斜對角線列印矩陣 public class printMatrix { public static void main(String[] args) { // 測試用例:3x4矩陣 // int a[][] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; //4x4矩陣 // int a[][] = {{1, 2, 3, 4}, // {5, 6, 7, 8}, // {9, 10, 11, 12}, // {13,14,15,16}}; //3x2矩陣 // int a[][] = {{1, 2}, // {3, 4}, // {5, 6}}; Scanner s = new Scanner(System.in); // m*n矩陣 int m =s.nextInt(); int n = s.nextInt(); int a[][]=new int[m][n]; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ a[i][j]=s.nextInt(); } } printt(m,n,a); } public static void printt(int m, int n, int[][] a) { // 副對角線及以上部分 // 第0列到n-1列 for (int k = 0; k < n; k++) { for (int i = 0, j = k; i < m && j >= 0; i++, j--) { System.out.print(a[i][j]); System.out.print(","); } } // 副對角線以下部分 // 第1行到m-1行 for (int k = 1; k < m; k++) { for (int i = k, j = n - 1; i < m && j >= 0; i++, j--) { System.out.print(a[i][j]); //最後一個元素後不列印逗號 if (!(i == m - 1 && j == n - 1)) System.out.print(","); } } } }