/**
* 1 16 15 14 13
* 2 17 24 23 12
* 3 18 25 22 11
* 4 19 20 21 10
* 5 6 7 8 9
*/
public static void print(int n){
int[][] xy = new int[n][n];
int circle = n / 2;//圈数
int x = 0;
int y = 0;
int start = 0;
for(int i = 0; i < circle; i++){
int step = n - i*2;//步数
//左
for(int k = 0; k < step;k++){
xy[x][y] = ++start;
if(k < step -1){
++y;
}
}
//下右都是一样的步数
step = step - 1;
//横坐标向右移一位
++x;
//下
for(int k = 0; k < step; k++){
xy[x][y] = ++start;
if(k < step - 1){
++x;
}
}
//纵坐标向上移一位
--y;
//右
for(int k = step; k > 0; k--){
xy[x][y] = ++start;
if(k != 1){
--y;
}
}
//横坐标向左移一位
--x;
//上
step = step - 1;
for(int k = step; k > 0; k--){
xy[x][y] = ++start;
if(k != 1){
--x;
}
}
//移位到下一圈
++y;
}
if(n % 2 > 0){
xy[x][y] = ++start;
}
for(int i = 0; i < xy.length; i++){
for(int j = 0; j < xy.length; j++){
System.out.printf("%02d ",xy[j][i]);
}
System.out.println("");
}
}
public static void main(String[] args) {
Test2.print(5);
}
螺旋矩阵
最新推荐文章于 2019-10-05 15:29:09 发布