解决方案 »

  1. import com.example.xom.Test;public class NumberPro {
    public static void main(String[] args) {
    int N = 3;
    int[][] testArray = new int[N][N];
    int value = 1;
    int H = N / 2; //定义水平坐标
    int V = N / 2; //定义垂直坐标 
    testArray[H][V] = value; //初始化第一个值
    int flag = N * N;
    // 定义四个方向变量,代表上下左右四个方向
    // 规律:右--> 下 --> 左 --> 上
    // 1,1,2,2,3,3,4,4,5,5 ……
    // 也就是说,从右开始,依次是
    // 右 下 
    // 左 左 上 上 
    // 右 右 右 下 下 下
    // ……
    int count = 1;
    int Step = 1;
    boolean Right = true;
    boolean Down = false;
    boolean Left = false;
    boolean Up = false;
    while(flag > value){
    if(Right){
    Step--;
    V++;
    testArray[H][V] = ++value;
    if(0 == Step){
    Right = false;
    Down = true;
    Step = count;
    }
    }else if(Down){
    H++;
    Step--;
    testArray[H][V] = ++value;
    if(0 == Step){
    count++;
    Down = false;
    Left = true;
    Step = count;
    }

    }else if(Left){
    V--;
    Step--;
    testArray[H][V] = ++value;
    if(0 == Step){
    Left = false;
    Up = true;
    Step = count;
    }

    }else if(Up){
    H--;
    Step--;
    testArray[H][V] = ++value;
    if(0 == Step){
    count++;
    Up = false;
    Right = true;
    Step = count;
    }
    }
    }


    // Print Array
    for(int i = 0; i < N; i++){
    System.out.println();
    for(int j = 0; j < N;j++){
    System.out.print(testArray[i][j] + "    ");
    }
    }

    }}LZ,你真不地道,这么难的题,你给这么一点分我随便做一道OJ都有100+来分基本注释了一下,留给你思考的机会
    不懂再问我~
    不过估计得下周才能回复,上班时间不上CSDN
      

类似问题 »