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);
}
}
数组螺旋打印
最新推荐文章于 2020-07-12 21:15:15 发布