package su.interview;import utils.com.Matrixer;/** * 螺旋列印數列 * * @author Toy * */public class Array_01 {/** * 從外向裡列印 東南西北--東南西北.. N->N-1->N-1->N-2 * * @return */public int[][] print_01(int n) {int[][] matrix = new int[n][n];int i = 0;int j = 0;int num = 1;while (n > 0) {// 東System.out.println("A: " + i + " " + j);for (int k = 0; k < n; k++) {matrix[i][j] = num;num++;j++;}j--;i++;// 南System.out.println("B: " + i + " " + j);for (int k = 0; k < n - 1; k++) {matrix[i][j] = num;num++;i++;}i--;j--;// 西System.out.println("C: " + i + " " + j);for (int k = 0; k < n - 1; k++) {matrix[i][j] = num;num++;j--;}j++;i--;// 北System.out.println("D: " + i + " " + j);for (int k = 0; k < n - 2; k++) {matrix[i][j] = num;num++;i--;}i++;j++;n = n - 2;}return matrix;}/** * 從裡向外列印(順時針) 北東南西--北東南西.. N->N-1->N->N * * @return */public int[][] print_02(int n) {int[][] matrix = new int[n][n];int i = n / 2;int j = (n-1) / 2;int num = 1;int step=2;while (num<=n*n) {System.out.println("step: "+step);// 北System.out.println("D: " + i + " " + j);for (int k = 0; k < step&&(num<=n*n); k++) {matrix[i][j] = num;num++;i--;}i++;j++;// 東System.out.println("A: " + i + " " + j);for (int k = 0; k < (step-1)&&(num<=n*n); k++) {matrix[i][j] = num;num++;j++;}j--;i++;// 南System.out.println("B: " + i + " " + j);for (int k = 0; k < step&&(num<=n*n); k++) {matrix[i][j] = num;num++;i++;}i--;j--;// 西System.out.println("C: " + i + " " + j);for (int k = 0; k < step&&(num<=n*n); k++) {matrix[i][j] = num;num++;j--;}j++;i--;step=step+1;}return matrix;}/** * @param args */public static void main(String[] args) {int n = 3;int[][] m;Array_01 arr = new Array_01();m = arr.print_01(n);Matrixer.show(m, n, n);m = arr.print_02(n);Matrixer.show(m, n, n);}}