題目描述:如何給一個N*M的矩陣輸出一個逆時針螺旋讀取的元素;
在題目看完時;就想起的程序員面試金典這本書里面一道類似的題目;原題要求是實現N*N矩陣元素的旋轉換位;相比這道題不同之處在於,(1)矩陣的形狀變的更隨意了;(2)矩陣層次感還是一樣的;(3)原來的元素值交換成了賦值;
其中可借鑒的思想:矩陣的層次性,元素存儲過程/步驟;
1 package shounue; 2 import java.util.Scanner; 3 public class snakeArrays { 4 public static void main(String[] args){ 5 Scanner in = new Scanner(System.in); 6 int column = in.nextInt(); 7 int row = in.nextInt(); 8 int [][] arrays = new int [row][column]; 9 int layers = 0; 10 int reallayer = 0; 11 int count = 1; 12 if(column < row) layers =((column % 2) == 0 ? (column/2) : (column/2 +1)); 13 else layers =((row % 2) == 0 ? (row/2) : (row/2 +1)); 14 System.out.println(layers); 15 for(;reallayer < layers; reallayer++){ 16 int i, j; //分別是行標記器和列標記器 17 for(i = reallayer; i < column - reallayer; i++)//上賦值 18 arrays[reallayer][i] = count++; 19 i--; 20 for(j = reallayer + 1; j < row - reallayer; j++)//右賦值 21 arrays[j][i] = count++; 22 j--; 23 for(i--;i >= reallayer; i--) //下賦值 24 arrays[j][i] = count++; 25 i++; 26 for(j--; j > reallayer; j--) 27 arrays[j][i] = count++; 28 } 29 for(int y = 0; y < row; y++) 30 {for(int x = 0 ; x < column; x++) 31 { 32 System.out.print(arrays[y][x]); 33 System.out.print(" "); 34 } 35 System.out.println(); 36 } 37 } 38 }
